我试图编译一个简单的程序,使用intsafe.h头与MSVC:
#include <intsafe.h>
int main(void) {
int result;
return IntAdd(10, 10, &result);
}
当试图编译这个程序时,我从链接器得到一个错误
/opt/msvc/bin/x86/cl test.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.37.32825 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
test.c
Microsoft (R) Incremental Linker Version 14.37.32825.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:test.exe
test.obj
test.obj : error LNK2019: unresolved external symbol _IntAdd referenced in function _main
test.exe : fatal error LNK1120: 1 unresolved externals
但是,我找不到IntAdd符号存在的位置。我对MSVC发行版附带的所有.lib文件都使用了dumpbin,但没有一个文件显示这个符号。IntAdd的文档也没有提到任何库(与类似的其他函数相反),所以我不确定该告诉链接器什么
1条答案
按热度按时间xv8emn3q1#
IntAdd
在条件块中定义如果你使用 c++ -你得到了
但与 c 编译器让使用没有声明
IntAdd
,但因为_IntAdd
(这意味着你使用x86
和__cdecl
)真的没有在任何obj或lib中定义,你得到链接器错误如果您想使用
IntAdd
,请执行以下操作:也读了 insafe.h 的评论