Visual studio 2010 如何解决LNK2019联动错误?

Visual studio 2010 如何解决LNK2019联动错误?,visual-studio-2010,dll,lnk2019,Visual Studio 2010,Dll,Lnk2019,我有两个项目,rootexp和testapp,rootexp是一个由C编写的DLL项目,testapp是一个测试rootexp.DLL的win32控制台项目。我的代码如下: roofexp.h testapp.cpp RootExp项目可以成功生成,当我生成testapp项目时,收到以下错误消息: error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl ParserExecute(char *,in

我有两个项目,rootexp和testapp,rootexp是一个由C编写的DLL项目,testapp是一个测试rootexp.DLL的win32控制台项目。我的代码如下:

roofexp.h

testapp.cpp

RootExp项目可以成功生成,当我生成testapp项目时,收到以下错误消息:

error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl ParserExecute(char *,int *,char *,int,void *)

我在谷歌上搜索了很长时间,无法解决我的问题。有人能告诉我我的代码出了什么问题以及如何解决吗?

有几件事我要检查一下:

  • 定义ParserExecute的库包含在项目的链接库列表中
  • 该函数实际上是从该DLL定义和导出的

  • 假设您正确地包含了DLL的.lib文件,大多数情况下这是由于编译器设置的不同。e、 g.如果您的DLL是在打开UNICODE的情况下编译的,请确保您的应用程序也是在打开UNICODE的情况下编译的(否则TCHAR的定义将不同)

  • 通过将“显示进度”链接器设置设置设置为详细,检查.lib是否确实正在加载
  • 在LIB文件上运行DUMPBIN,检查导出的函数是否与链接器尝试导入的函数相同

  • 没有明显的方法确保这些函数实际上是从DLL导出的。您的ROOF_EXP_API宏看起来肯定是错误的,它通常是这样编写的:

    #ifdef ROOF_EXP_API
    #  define ROOF_EXP_API __declspec(dllexport)
    #else
    #  define ROOF_EXP_API __declspec(dllimport)
    #endif
    

    您是否将lib文件传递给了链接器?是的,我使用
    /LIBPATH:“lib path”roofexp.lib
    链接器选项将lib文件传递给了链接器。可能的重复项,以及其他几个选项,所有这些选项得出的结论基本相同。
    error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl ParserExecute(char *,int *,char *,int,void *)
    
    #ifdef ROOF_EXP_API
    #  define ROOF_EXP_API __declspec(dllexport)
    #else
    #  define ROOF_EXP_API __declspec(dllimport)
    #endif