在Visual Studio 2008中,我有一个包含两个项目的解决方案:一个项目是.dll,另一个是调用.dll的命令行应用程序。
如果我删除其中一个文件(“ast.c”),然后将其直接添加回来,我会收到以下错误。
如何解决此错误?
错误22错误LNK2019:未解析的外部符号“__declspec(dllimport)int __cdecl ast_get_int_value(struct ast_node *,void *)”(__ imp_?ast_get_int_value @@ YAHPAUast_node @@ PAX @ Z)在函数“double __cdecl d_low”中引用ast_node *,struct ast_node *,struct ast_node *,struct ast_node *,void *)“(?d_low @@ YANPAUast_node @@ 000PAX @ Z)main.obj main
答案 0 :(得分:2)
得到它 - 必须右键单击该项目,进入“链接器”和“输入”和“其他依赖项”,并添加“.. \ $(ConfigurationName)\ dll.lib”。文件“dll.lib”是作为.dll的编译过程的一部分创建的,我们需要告诉链接器该文件的位置,以便它可以解析任何外部依赖项。这一劳永逸地修复了链接错误。
来自http://www.codeproject.com/KB/DLL/XDllPt1.aspx的一些很好的提示解释了链接过程:
还看到:
http://support.microsoft.com/kb/815065
和
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/a22571ad-ef89-4f94-afca-4f4d32cdd0f2