Visual studio 具有不同编译器版本的调试生成的链接器错误

Visual studio 具有不同编译器版本的调试生成的链接器错误,visual-studio,visual-studio-2010,dll,dllimport,dllexport,Visual Studio,Visual Studio 2010,Dll,Dllimport,Dllexport,我们有一个DLL,在发布模式下使用MS Visual Studio 2010构建。我们向不同的客户提供这个DLL,以及一个.lib文件。DLL中的函数通过以下方式导出: 外部“C”uu declspec(dllexport)int-analyze(int-id) 我们的客户有两个应用程序使用此DLL。这两个应用程序都使用以下方式导入DLL函数: 外部“C”uu declspec(dllimport)内部分析(内部id) 其中一个应用程序是使用MS Visual Studio 2010构建的。此应

我们有一个DLL,在发布模式下使用MS Visual Studio 2010构建。我们向不同的客户提供这个DLL,以及一个.lib文件。DLL中的函数通过以下方式导出:

外部“C”uu declspec(dllexport)int-analyze(int-id)

我们的客户有两个应用程序使用此DLL。这两个应用程序都使用以下方式导入DLL函数:

外部“C”uu declspec(dllimport)内部分析(内部id)

其中一个应用程序是使用MS Visual Studio 2010构建的。此应用程序可以在调试和发布模式下成功构建

不幸的是,另一个应用程序必须使用MS Visual Studio 2005作为其构建环境。在此应用程序中,可以成功构建发布版本,但是,当我们尝试在调试模式下构建时,会出现链接器错误:

LNK2019:函数“void”中引用的未解析外部符号imp分析cdecl进程(字符常量*,字符常量*)(?进程@@ABCERFG0@Z)

有人能帮我理解我们这里缺少什么吗?我们是否以一种不能跨编译器移植的方式导出函数?解决办法是什么


在这方面,

在VS2005和VS2010之间.obj文件格式是高度保守的。这不应该是一个问题,特别是因为它是一个简单的无损坏符号引用。尤其是当它在发行版配置中工作,而不是在调试中工作时。简单的解释总比复杂的解释好:您的客户只是忘记了将您的.lib文件添加到链接器的附加依赖项设置中

请注意,两种配置都需要更改设置,请使用对话框左上角的“配置”组合


通过在.h文件中使用#pragma comment(lib,“mumble.lib”),您可以帮助客户进入成功的陷阱。

您是否向客户提供了pdb文件?DLL的pdb文件??不,我没有提供pdb文件。但据我所知,丢失的pdb文件不应导致链接器错误。没有?嗯,我希望他们没有错过。谢谢,我不应该假设他们在两种配置中都包含了lib文件。