好吧,我基本上继承了一堆我被告知要修复的代码,因为它几个月前曾经可以工作,但现在不行。程序本身似乎充满了链接错误,我能够修复其中的一些错误。但是,我遇到了 LNK2019 未解决的外部 _ imp 错误,其中 main 中使用的某些功能未解决。由于“ _imp”,我假设这是与从 .dll 或 .lib 文件导入相关的问题。
首先,我有三个 .lib 文件,我相信它们可以正确地将它们导入到 VS2010 中,并且我已将平台配置为 64x。还有与 .lib 文件对应的 .dll 文件。包含这些错误缠身函数声明的 .h 文件包含类似
ILAPI void ILAPIENTRY ilDeleteImage(const ILuint Num);
Run Code Online (Sandbox Code Playgroud)
不幸的是,我猜测该定义是在 .dll 文件中定义的,该文件不是我自己写的,所以我不确定。但由于这是在我之前工作的代码,我相信我收到此错误是因为链接器找不到定义而不是 def/decl 不匹配的原因。
当我将鼠标悬停在 ILAPI 上时,它指出:“ILAPI __declspec(dllimport)” 我目前的猜测是程序导入了 .lib 文件,而 .lib 文件使用 .dll 文件来获取函数的定义。我相信我正在导入 .lib 文件,因为编译器不再一直告诉我它找不到特定的 .lib 文件。但是我担心它可能没有连接 .dll 文件。我有些不确定。我已经打开了 .lib 文件,并且 .lib 文件包含给出错误的函数的名称。我还使用了 Dependency walker 程序来查看我的 DLL 文件,它给了我以下一些错误:
错误:由于隐式依赖模块中缺少导出函数,至少有一个模块具有未解析的导入。
错误:找到具有不同 CPU 类型的模块。
根据其他人的评论,我觉得我可以忽略第二个错误。但我不确定第一个错误。我也不确定这是否是问题的根本原因。它可能是也可能不是。
我还使用 VS cmd 和依赖项walker 查看了 .lib 文件的内部,似乎找不到的函数的名称列在 .lib 和 .dll 之一中。
在配置方面,我在发布模式 x64 …