LNK1120错误 - 使用VS2010 DLL的VS2012项目

时间:2013-07-10 22:19:01

标签: dll visual-studio-2012 migration linker-errors

我有一个用vc10(VS2010)编译的第三方DLL。 它导出以下功能:

bool myDLL_EXPORTS_API myFunction(std::vector<int>::const_iterator c)
{
return true;
}

我的exe使用此DLL。我正在尝试使用vc11(vs2012)编译我的exe。

#include "stdafx.h"
#include <vector>
#include "myDll_VC10\myDll_VC10.h"

int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<int>::const_iterator c;
    myFunction(c);

    return 0;   
}

我收到以下链接器错误:

  

1&gt; usingDLLvc10.obj:错误LNK2019:未解析的外部符号“__declspec(dllimport)bool __cdecl&gt; myFunction(类std :: _ Vector_const_iterator&gt;&gt;)”(_ imp ?myFunction @ @YA_NV?$ _ Vector_const_iterator @ V?$ _ Vector_val @ U?&gt; $ _ Simple_types @H @ std @@@ std @@@ std @@@ Z)在函数_wmain中引用   1&gt; C:\ Work \ Training \ vectorReproduceBug \ usingDLLvc10 \ Debug \ usingDLLvc10.exe:致命错误LNK1120:1&gt;未解析的外部

注意:如果我的exe用vc10(VS2010)编译,则此代码编译并链接。 如果没有使用vc11(VS2012)编译的第三方库,如何修复此链接器错误?

1 个答案:

答案 0 :(得分:4)

你基本上不能。编译后的二进制文件根据您用于编译它的编译器而有所不同,因此vs2010生成的DLL与vs2012不兼容。解决此问题的唯一方法是将旧的2010库从源代码重新编译为2012版本。