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!
If you enjoyed what you read here, create your account today and start earning FREE STEEM!