我正在使用一个带有pvcs编译器的makefile系统(使用Microsoft Visual C++,2008编译器),而且我正在得到一些链接错误,其形式如下:
error LNK2019:在函数_main中引用了__imp__RegisterFilter@8的未解决的外部符号
尽管使用了extern "C"
声明,但仍然会发生这种情况。
extern "C" int CLRDUMP_API RegisterFilter( LPCWSTR pDumpFileName, unsigned long DumpType );
此外,在makeexe.mak文件中,库被链接为: $(COMPILEBASE)\lib\clrdump.lib \
老实说,我不是一个makefile专家,并且我正在将一个系统从Microsoft Visual C++ 6.0更改到2008。这种更改可能与链接错误有关,因为这个系统以前可以工作。
任何帮助都将不胜感激。
提前致谢,
诚挚地, Joseph
-- 编辑1 --
有人知道如何在pvcs的makefile系统中打开详细模式吗?
请注意,上述函数已经是编译器修饰版本。
__imp__RegisterFilter@8
相比之下,C++函数只是
RegisterFilter
感谢您的帮助,但如果有人能够发布更完整的解决方案,那也将非常感激。
诚挚地,Joseph
-- 编辑2 --
有位好心人发布了这个,但当我登录时它消失了:
imp前缀表示该函数是从DLL中导入的。检查CLRDUMP_API的定义 - 它是否为__declspec(dllimport)?有关更多信息,请参见本文。
曾经有一个有效的链接,但我已经丢失了,不过我想人们总是可以搜索这个话题。
谢谢你,无论你是谁!
-- 编辑3 --
感谢ChrisN(我还没有被允许投票)。尽管使用了刷新按钮,但您的答案消失了,但在我发布剪贴板后又重新出现了。
这是我对它的定义:
define CLRDUMP_API __declspec(dllimport) __stdcall
我假设__stdcall是可以的?
-- 第四次编辑 --
虽然我很感激那些回答过我的人,特别是ChrisN,但至少在我的系统上,链接错误仍然存在。如果有人有更多的见解,我将不胜感激。再次感谢。