从生成库切换到exe或dll时出现无法解决的外部符号错误
Unresolved External Symbol Errors switching from build library to exe or dll
我正在将应用程序构建为库,但为了确保我可以获得我想要的输出,我将其切换为生成exe。我一这样做,就得到了几个关于未解析外部符号的错误。
起初,我认为我没有设置指向引用的第三方库的路径,所以我将文件夹添加到路径变量中,甚至将其添加到include、references和源文件中,只是为了确保我拥有所有路径。
我仍然得到错误:
错误LNK2019:未解析的外部symbol"__declspec(dllimport)public:静态空隙__cdecl xercesc_2_8::XMLPlatformUtils::Initialize(charconst*const,char const*const,类xercesc_2_8::PanicHandler*const,类xercesc_2_8::MemoryManager*const,bool)"(__imp_?Initialize@XMLPlatformUtils@xercesc_2_8@@SAXQBD0QAVPanicHandler@2@QAVMemoryManager@2@_N@Z)在函数"void __cdecl"中引用xsd::cxx::xml::initialize(void)"(?initialize@xml@cxx@xsd@@YAXXZ)
我之所以在这里问它,是因为在Visual Studio中,当我把它作为库构建时,我没有得到这些错误,但作为dll和exe,我得到了。
有人有什么想法吗?
构建库时,链接器不需要解析导入的符号。只有当它开始将对象文件和库链接在一起时,才会发生这种情况。
这就是为什么您在构建可执行文件时才开始看到错误的原因。
事实上,在VC2008(和2005,如果我记得很清楚的话)中,使用项目属性->Linker->Input->Additional dependencies。你需要的库需要用空格分隔(奇怪,嘿?)
祝你好运!
您还需要指定要链接到该库。链接路径只是告诉链接器需要查找的数据在哪里,而不是要查找什么。您还需要指定您正在针对有问题的库(xerces?)进行链接。
不幸的是,我不知道如何在MSVC中指定,但它可能在"链接器选项"下。
正如@coppro所说,您需要指定要链接到该库。当你构建EXE或DLL时,会运行一个链接器,它需要找到你正在使用的所有函数,但要构建库,会运行库管理员,它不必解析所有函数引用(但当你在EXE中使用该库时,你必须再次解析)。
因此,转到项目的选项、链接器选项、输入,并在"附加库路径"下列出定义缺失函数(xerces.lib?)的库。您可能需要在"其他库路径"下添加其位置。
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 解决错误:运算符 [] 不匹配
- 开发如何解决错误193:%1不是Dev C 中的Win32应用程序
- 我该如何解决错误,说明创建图形对象没有放置在图形场景中
- 如何解决错误 C2719 在 Visual Studio 2010 C++ 中不存在代码行时
- 如何在C++中使用 ZeroMQ 发送包含数组的结构时解决错误
- 使用strupr和strlwr时如何解决错误"invalid conversion of char to char*"?
- Eigen SparseLU解决错误读取访问冲突,这>m_sup_to_col被0x111011101110112
- 如何解决错误:在Mac上令牌"("之前缺少二进制运算符?
- 如何解决错误:从" int* "到" int "的转换无效
- 如何解决错误PRJ0002:错误结果 -1073741515从"cl.exe"返回?
- 如何解决错误LNK2019:未解析的外部符号
- 解决错误的一般方法:变量周围的堆栈'x'已损坏
- 如何在Xcode中将长双精度转换为字符串格式?或如何解决错误"use of undeclared identifier 'to_string' "
- Eclipse conio.h正在解决错误
- 需要帮助解决错误 C2664
- 如何解决错误LNK2019:未解析的外部符号
- 如何解决错误:LNK2019:未解析的外部符号"public"?
- 无法解决错误LNK2019:未解析的外部符号
- 如何解决错误C2039