链接器工具警告 LNK4286

“filename_1.obj”中定义的符号“symbol”由“filename_2.obj”导入

为符号指定了 __declspec(dllimport),即使该符号是在同一映像中的对象文件 filename_1.obj 中定义的。 删除 __declspec(dllimport) 修饰符以解决此警告。

备注

警告 LNK4286 是更通用的链接器工具警告 LNK4217 版本。 如果链接器可以判断哪个对象文件(而不是哪个函数)引用了该符号,它将生成警告 LNK4286。

要解决 LNK4286,请从 filename_2.obj 中引用的符号的前向声明中删除 __declspec(dllimport) 声明修饰符

尽管最终生成的代码行为正确,但为调用导入函数而生成的代码比直接调用该函数的效率更低。 使用 /clr 选项进行编译时,不会出现此警告。

有关导入和导出数据声明的详细信息,请参阅 dllexport、dllimport

另请参阅

链接器工具警告 LNK4049
链接器工具警告 LNK4217
dllexport、dllimport