将cpuid作为静态lib依赖加入VS2017工程

in cpuid •  6 years ago 

CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,制造商信息,商标信息,序列号,缓存等一系列CPU相关的东西。
https://github.com/anrieff/libcpuid
Veselin Georgiev(anrieff)开发了一个C程序来获取CPU信息。
下面的步骤展示了,将libcpuid建立成一个VS2017项目cpuid,其生成目标为静态lib。编译成功后,将cpuid.lib作为我项目(比如,叫hhjxmr)的一部分。Hhjxmr加入如下头文件后,
#include "libcpuid.h"
就可使用其中的函数。
(1)新建一个VS2017项目cpuid,注意使用windows桌面的静态库。建立成功后,右键点击项目cpuid,选择cpuid属性页后,可看到配置属性=》常规里,
目标文件扩展名为.lib; 配置类型为静态库(.lib)
(2)在cpuid工程中加入如下10个头文件。
amd_code_t asm-bits intel_code_t libcpuid
libcpuid_constants libcpuid_internal libcpuid_types
libcpuid_util recog_amd recog_intel
其他头文件没有包含在xmrig工程中。
在cpuid工程中加入如下5个.c文件。
asm-bits cpuid_main libcpuid_util
recog_amd recog_intel
(3)在cpuid工程中加入masm-x64.asm。注意,我的环境中,VS2017不能自动识别.asm文件,右键点击masm-x64.asm,在属性页中“项类型”,选择Microsoft Macro Assembler
或许还要选择cpuid工程,生成依赖项=》生成自定义,选择
Masm(.targets,.props)
(4) cpuid工程的属性页,选择VC++目录=》包含目录,将前述10个头文件所在目录加进去,这样,VS2017能找到这些头文件。
(5)cpuid工程的属性页,选择C/C++=》预处理定义,加入:
_CRT_SECURE_NO_WARNINGS;
避免旧的字符串函数sprintf等报错。
(6)cpuid工程的属性页,选择“不适用预编译头”
这样,就能够生成cpuid.lib。
接下来,可以在我的项目中适用cpuid.lib。
具体步骤:
(1)创建工程hhjxmr,在代码里加入
#include "libcpuid.h"
将来要使用这里面的函数。
(2)选择工程hhjxmr的属性页,在C/C++=》常规=》附加包含目录,把libcpuid.h文件所在目录加进去;在链接器=》常规=》附加库目录,把cpuid.lib文件所在目录加进去;在链接器=》输入=》附加依赖项,将cpuid.lib加入。
成功使用libcpuid

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!