繁体   English   中英

如何在Visual Studio中使用预编译库构建应用程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM