无法链接到库... VS 2010 lib

时间:2011-06-19 21:24:45

标签: c++ visual-studio-2010 dll import

我可以成功地构建和使用库。后者只有当库和其他项目都在同一个解决方案中时.... 我在名为lib ...的文件夹下复制了isam.lib isam.dll isam.exp isam.h。

然后我创建了一个新的解决方案..

设置链接器 - >输入使用我的isam.lib ...构建失败,无法找到该文件...
将VC ++目录设置为包含目录和库目录到lib文件夹...

构建成功..

我也设置了C / C ++的路径一般附加包括目录
设置链接器常规附加库目录

构建没问题....

然后我包含我的isam文件..

    #include "stdafx.h"
#include <isam.h>

    int _tmain(int argc, _TCHAR* argv[])
    {
        isopen("lamogio",2);
        return 0;
    }

建筑失败......

错误1错误LNK2019:未解析的外部符号“__declspec(dllimport)int __cdecl isopen(char const *,int)”(_ imp ?isopen @@ YAHPBDH @ Z)在函数_wmain C中引用:\ Users \ Parhs \ documents \ visual studio 2010 \ Projects \ testdll2 \ testdll2 \ testdll2.obj testdll2

错误2错误LNK1120:1个未解析的外部C:\ Users \ Parhs \ documents \ visual studio 2010 \ Projects \ testdll2 \ Debug \ testdll2.exe 1 1 testdll2

1 个答案:

答案 0 :(得分:3)

好吧,我们假设您告诉链接器使用链接器,输入,附加依赖关系设置链接到isam.lib。然后,链接器错误的可能原因是您在C中编写了isam代码,并且您正在C ++程序中使用它。你必须告诉编译器代码是用C编写的:

#include "stdafx.h"
extern "C" {
    #include <isam.h>
}

更典型的解决方案是将其放在isam.h文件中,以便它可以使用。像这样:

#ifdef __cplusplus
  extern "C" {
#endif

// The declarations
//...

#ifdef __cplusplus
}
#endif