当在静态方法中使用函数时,LNK2019无法解析的外部出现

用户1741137

我有一个C ++ Visual Studio 2013控制台应用程序,该应用程序应该利用我编写的DLL MyDLLlib.dll。MyDLLlib用C编写。函数之一称为Get_Version。原型是

const char *Get_Version();

我将其放在源文件的顶部以利用原型:

extern "C"{
#include "MyDLLlib.h"
}

如果在函数中这样在主体中调用

printf("version %s\n",Get_Version());

然后就可以了。

但是,如果我添加了一个带有一些静态方法的类,并且一个静态方法调用了Get_Version()

const char * ret = Get_Version();

然后我得到一个链接错误:

Error   1   error LNK2019: unresolved external symbol 
"__declspec(dllimport) char * __cdecl Get_Version(void)" (__imp_?Get_Version@@YAPADXZ) 
referenced in function "private: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl ServiceDispatch::decoder_Get_Version(class StringBuffer &)" 
(?decoder_Get_Version@ServiceDispatch@@CA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAVStringBuffer@@@Z)   
D:\devt\CplusPlus\VSTrials\Link_to_MyDLLlib\Link_to_MyDllLib\ServiceDispatch.obj    Link_to_MyDLLlib``

我正在使用相同的包含。

关于我可能做错了什么的任何线索?

马特乌斯·格热耶克(Mateusz Grzejek)

如果您始终CLASS_DECLSPEC定义,那么这肯定无法正常工作。看这个例子:__declspec(dllimport)

DLL_header.h

#if defined( _BUILD_DLL )
#   define DLLAPI           __declspec(dllexport) //Export when building DLL
#else
#   define DLLAPI           __declspec(dllimport) //Import when using in other project
#endif

DLLAPI const char *Get_Version();

DLL_source.cpp

#include "Header.h"

const char *Get_Version()
{
    return "1.1.0.4";
}

_BUILD_DLL定义的方式生成DLL

Main.cpp

#include "DLL_header.h"

int main()
{
    printf("%s\n", Get_Version());
    return 0;
}

_BUILD_DLL 未定义的方式构建它

在您的情况下,可能会出现问题extern "C"-您在标头中包含标头extern "C",该标头声明Get_Version()具有__cdecl链接。但是链接器正在搜索

__imp_?Get_Version@@YAPADXZ

这是一个错误的(C ++)名称。您的DLL是C还是C ++项目?如果您的DLL是作为C项目构建的(不是C++),请extern "C"Get_Version()的声明中加上以下内容#ifdef

#ifdef __cplusplus
extern "C" {
#endif

DLLAPI const char *Get_Version();

#ifdef __cplusplus
}
#endif

无论哪种方式,都请extern "C"从中删除#include另外,检查.lib此DLL的文件是否作为依赖项附加到项目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误LNK2019:使用SendInput()时出现无法解析的外部符号

来自分类Dev

使用defalt args时在函数_main中引用的错误LNK2019无法解析的外部符号

来自分类Dev

错误LNK2019:将代码放入cpp文件时出现无法解析的外部符号

来自分类Dev

错误LNK2019:无法解析的外部符号:: FindWindow()函数

来自分类Dev

LNK2019:函数___tmainCRTStartup中使用DLL引用的未解析的外部符号_main

来自分类Dev

如何解决错误LNK2019:无法解析的外部符号-函数?

来自分类Dev

错误LNK2019:函数main中引用了无法解析的外部符号

来自分类Dev

错误21错误LNK2019:无法解析的外部符号:....在函数:...中引用。

来自分类Dev

错误LNK2019:函数___tmainCRTStartup中引用了无法解析的外部符号_wWinMain @ 16

来自分类Dev

错误LNK2019:函数main中引用了无法解析的外部符号

来自分类Dev

C ++ LNK2019无法解析的外部符号stdlib

来自分类Dev

收到“错误LNK2019:无法解析的外部符号...”

来自分类Dev

C ++ LNK2019无法解析的外部符号

来自分类Dev

C ++ LNK2019错误:无法解析的外部符号

来自分类Dev

LNK2019:C ++ / CLI中无法解析的外部符号

来自分类Dev

Visual Studio的LNK2019错误-无法解析的外部符号

来自分类Dev

错误:LNK2019:Qt中无法解析的外部符号

来自分类Dev

错误LNK2019:无法解析的外部符号“ public:

来自分类Dev

问题:“错误LNK2019:无法解析的外部符号”

来自分类Dev

如何修复LNK2019无法解析的外部符号

来自分类Dev

错误LNK2019:无法解析的外部符号“ public:__thiscall

来自分类常见问题

LNK2019:使用std :: ifstream时未解析的外部符号

来自分类Dev

LNK2019:使用std :: ifstream时未解析的外部符号

来自分类Dev

Qt - LNK2019 在类的成员函数中使用命名空间的函数时

来自分类Dev

Visual Studio 2012错误LNK2019:无法解析的外部符号,与正在运行的静态库链接

来自分类Dev

使用mex编译.C文件包含库-错误LNK2019:无法解析的外部符号-用于NPTrackingTools

来自分类Dev

标头中的类的Struct函数声明和cpp中的定义。在单独的库中使用函数时的lnk2019

来自分类Dev

C ++:错误LNK2019:函数中引用的未解析的外部符号__snprintf

来自分类Dev

C ++:错误LNK2019:函数_main中引用的未解析的外部符号

Related 相关文章

  1. 1

    错误LNK2019:使用SendInput()时出现无法解析的外部符号

  2. 2

    使用defalt args时在函数_main中引用的错误LNK2019无法解析的外部符号

  3. 3

    错误LNK2019:将代码放入cpp文件时出现无法解析的外部符号

  4. 4

    错误LNK2019:无法解析的外部符号:: FindWindow()函数

  5. 5

    LNK2019:函数___tmainCRTStartup中使用DLL引用的未解析的外部符号_main

  6. 6

    如何解决错误LNK2019:无法解析的外部符号-函数?

  7. 7

    错误LNK2019:函数main中引用了无法解析的外部符号

  8. 8

    错误21错误LNK2019:无法解析的外部符号:....在函数:...中引用。

  9. 9

    错误LNK2019:函数___tmainCRTStartup中引用了无法解析的外部符号_wWinMain @ 16

  10. 10

    错误LNK2019:函数main中引用了无法解析的外部符号

  11. 11

    C ++ LNK2019无法解析的外部符号stdlib

  12. 12

    收到“错误LNK2019:无法解析的外部符号...”

  13. 13

    C ++ LNK2019无法解析的外部符号

  14. 14

    C ++ LNK2019错误:无法解析的外部符号

  15. 15

    LNK2019:C ++ / CLI中无法解析的外部符号

  16. 16

    Visual Studio的LNK2019错误-无法解析的外部符号

  17. 17

    错误:LNK2019:Qt中无法解析的外部符号

  18. 18

    错误LNK2019:无法解析的外部符号“ public:

  19. 19

    问题:“错误LNK2019:无法解析的外部符号”

  20. 20

    如何修复LNK2019无法解析的外部符号

  21. 21

    错误LNK2019:无法解析的外部符号“ public:__thiscall

  22. 22

    LNK2019:使用std :: ifstream时未解析的外部符号

  23. 23

    LNK2019:使用std :: ifstream时未解析的外部符号

  24. 24

    Qt - LNK2019 在类的成员函数中使用命名空间的函数时

  25. 25

    Visual Studio 2012错误LNK2019:无法解析的外部符号,与正在运行的静态库链接

  26. 26

    使用mex编译.C文件包含库-错误LNK2019:无法解析的外部符号-用于NPTrackingTools

  27. 27

    标头中的类的Struct函数声明和cpp中的定义。在单独的库中使用函数时的lnk2019

  28. 28

    C ++:错误LNK2019:函数中引用的未解析的外部符号__snprintf

  29. 29

    C ++:错误LNK2019:函数_main中引用的未解析的外部符号

热门标签

归档