围绕Detours构建一些代码(VS2008)时出现了一个奇怪的问题。
我为链接器添加了必要的MS标记(也尝试将其直接添加到“其他依赖项”);
#pragma comment(lib, "detours.lib")
并适当设置我的包含路径和库搜索路径,但我遇到LNK2019错误。
具体错误是;
Error 1 error LNK2019: unresolved external symbol _DetourTransactionCommit@0 referenced in function _DllMain@12 dllmain.obj DetourDLL
Error 2 error LNK2019: unresolved external symbol _DetourUpdateThread@4 referenced in function _DllMain@12 dllmain.obj DetourDLL
Error 3 error LNK2019: unresolved external symbol _DetourTransactionBegin@0 referenced in function _DllMain@12 dllmain.obj DetourDLL
链接器似乎正在查找.lib文件(否则,据我所知它将抛出其他错误)。
我将detours.lib输入了dumpbin,发现其中存在符号,但是开始时并没有用下划线定义它们(因为我在VC ++领域玩过一段时间,所以我不确定链接器是否确实存在寻找_
0D1 00000000 SECT4B notype () External | DetourTransactionBegin
0D3 00000000 SECT4D notype () External | DetourTransactionCommit
0D5 00000000 SECT51 notype () External | DetourUpdateThread
如果有人可以提出建议,我将不胜感激。
刚刚发现一则帖子,表明我的符号导出中缺少前导下划线可能是由于它是使用不同的编译器构建的,而事实并非如此(好吧,它是使用VS2013构建的,因此从技术上讲是“不同的”编译器但是没有一个打算使用不同约定的人)也尝试在VS2013上构建相同的代码,但我遇到了相同的错误(在那里不足为奇)。