[英]How To Build Application With Precompiled Library in Visual Studio
我正在使用我在Visual Studio 2010中编写的预编译库(.lib)。我的解决方案有两个项目。 第一个项目(C)构建库。 第二个项目(C ++)是一个Win32控制台应用程序,用于测试库。 我尝试过的所有内容都无法解决链接器错误。 (我认为这很容易,因为一切都在同一个解决方案中。)任何指针都会受到赞赏。 谢谢。
这是我得到的链接器错误:
1> MyProject.obj:错误LNK2019:函数_wmain中引用的未解析的外部符号“void __cdecl my_function(void)”(?my_function @@ YAXXZ)
1> C:\\ Documents and Settings \\ user \\ Desktop \\ MySolution \\ Debug \\ MyProject.exe:致命错误LNK1120:1未解析的外部
这是Win32控制台应用程序的代码:
#include "stdafx.h"
#include "my_api.h"
int _tmain(int argc, _TCHAR* argv[])
{
my_function();
return 0;
}
以下是在my_api.h
声明my_function
方法:
extern VOID my_function(VOID);
您需要使用C链接声明您的函数,以便链接器理解这些函数是在C代码中定义的,而不是C ++代码:
// my_api.h
#ifdef __cplusplus
extern "C" {
#endif
extern VOID my_function(VOID);
// more function declarations etc.
#ifdef __cplusplus
}
#endif
如果您只有一个功能,则可以删除大括号:
// my_api.h
#ifdef __cplusplus
extern "C"
#endif
extern VOID my_function(VOID);
确保库项目的输出目录(无论$(OutDir)
在该项目中扩展到什么$(OutDir)
位于测试项目的链接器搜索路径上。 为此,请转到项目“属性”对话框。 在“ Linker -> General
,确保在“ Additional Library Directories
目录”中设置了Additional Library Directories
。 此外,请确保在Linker -> Input
,库本身( my_api.lib
)列在Additional Dependencies
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.