我有一个问题,我一直在试图解决最长的时间。
我在Visual C++中有一个静态库项目,并且我希望另一个项目能够链接到它。到目前为止,我只是添加了对静态库项目的引用,该引用会自动链接库。
我希望能够仅使用头文件和.lib文件链接到库。但是,出现“无法解析的外部符号”错误。
我以为我做对了-我指定了include目录,库目录,并进入了链接器输入属性,并提供了lib作为附加依赖项。
我能够以这种方式引用其他静态库(例如SDL),那么为什么在尝试引用我的静态库时出现错误?
谢谢您的帮助。
问题是它没有引用实际的lib文件,还是lib本身内有东西?
这些是我收到的错误消息:
错误2错误LNK2019: Unresolved external symbol “public:void __thiscall XEngine::XCore::XScreen::init(class XEngine::XCore::XGame&)”(?init @ XScreen @ XCore @ XEngine @@ QAEXAAVXGame @ 23 @ @Z)在函数“void __cdecl XEngine::XEngineInit(XEngine::XCore::XScreen&,XEngine::XCore::XGame&)类”中引用(?XEngineInit @ XEngine @@ YAXAAVXScreen @ XCore @ 1 @ AAVXGame @ 31 @@ Z)C:\Users\Xander Masotto\Documents\Visual Studio 2010\Projects\Pong\Pong\source.obj Pong
错误3错误LNK2019: Unresolved external symbol “公共(public):__thiscall XEngine::XCore::XScreen::〜XScreen(void)”(?? 1XScreen @ XCore @ XEngine @@ QAE @ XZ)在函数“void __cdecl XEngine:::”中引用XEngineInit(类XEngine::XCore::XGame&)“(?XEngineInit @ XEngine @@ YAXAAVXGame @ XCore @ 1 @@ Z)C:\Users\Xander Masotto\Documents\Visual Studio 2010\Projects\Pong\Pong\source .obj Pong
错误4错误LNK2019:未解析的外部符号“公共(public):__ thiscall XEngine::XCore::XScreen::XScreen(void)”(?? 0XScreen @ XCore @ XEngine @@ QAE @ XZ)在函数“void __cdecl XEngine::XEngineInit中引用” (类XEngine::XCore::XGame和)”(?XEngineInit @ XEngine @@ YAXAAVXGame @ XCore @ 1 @@ Z)C:\Users\Xander Masotto\Documents\Visual Studio 2010\Projects\Pong\Pong\source。乒乓球
最佳答案
确保您要导出的库中要公开给其他应用程序(即dll或exe)的函数,类和变量。默认情况下,它们不公开。
当您为库创建项目时,通常会进行基础工作。
#ifdef TESTLIB_EXPORTS
#define TESTLIB_API __declspec(dllexport)
#else
#define TESTLIB_API __declspec(dllimport)
#endif
使用上面的代码在项目创建期间生成的代码之后,我只需要做两件事即可公开函数,类或变量:
1)确保已将TESTLIB_EXPORTS定义为预处理器。项目设置:C++/Preprocessor/PreprocessorDefinitions
2)在要公开的每个函数,类或变量上使用TESTLIB_API定义:
class TESTLIB_API Order {
void doSomething();
};