gpt4 book ai didi

导入 dll 时的 c++ lnk 2028、lnk 2020、lnk2019 和 lnk2001

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:37 30 4
gpt4 key购买 nike

几天前我问了一个类似的问题,它帮助我找到了 __declspec() 的正确方向,但我又被卡住了。我会尽可能清楚。希望有人能告诉我我做错了什么。它可能是一些小而简单的东西。

项目信息:

jc:
project type: Class Library
configuration type: Dynamic Library (.dll)
common runtime language support: /clr
references: System
System.Data
System.Drawing
System.Windows.Forms
System.Xml
test (start up project):
project type: CLR Empty project
configuration type: Application (.exe)
common runtime language support: /clr
references: jc
project dependencies: jc

jc文件:

注意:我保留了 resource.h、stdafx.h/cpp 和 AssemblyInfo.cpp 不变。

jc.h

#ifndef JC_H
#define JC_H
#include "def.h"
#include "file.h"
#endif

定义.h

#ifndef JC_DEF_H
#define JC_DEF_H
#ifdef JC_API_DEFINITIONS
# define JC_API __declspec(dllexport)
#else
# define JC_API __declspec(dllimport)
#endif
#endif

文件.h

#ifndef JC_FILE_H
#define JC_FILE_H
#include "def.h"
extern JC_API int test_var;
JC_API void test_func(void);
class JC_API test_class
{
public:
__thiscall test_class();//I inserted __thiscall for compatibility with other compilers. Is this necessary and should I use it for the definition as well?
};
#endif

文件.cpp

#include "StdAfx.h"
#define JC_API_DEFINITIONS
#include "file.h"
JC_API int test_var = 10;
JC_API void test_func(void){}
__thiscall test_class::test_class(){}

测试文件:

测试.cpp

#include "../jc/jc.h"
int main(void)
{
int x = test_var;
test_func();
test_class obj;
return 0;
}

这些是我得到的错误:

1>main.obj : error LNK2028: unresolved token (0A000009) "public: __thiscall test_class::test_class(void)" (??0test_class@@$$FQAE@XZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>main.obj : error LNK2028: unresolved token (0A00000A) "void __cdecl test_func(void)" (?test_func@@$$FYAXXZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>main.obj : error LNK2020: unresolved token (0A00000B) "__declspec(dllimport) int test_var" (__imp_?test_var@@3HA)
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall test_class::test_class(void)" (??0test_class@@$$FQAE@XZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl test_func(void)" (?test_func@@$$FYAXXZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) int test_var" (__imp_?test_var@@3HA)

我被这个问题困扰了几天,希望有人能帮助我。

谢谢!

最佳答案

找到了答案。错误不在代码中。我不知道我必须在“dll”属性的“链接器/输入”选项中将“.lib”文件包含到“附加依赖项”中。这个视频说得很清楚:“http://www.youtube.com/watch?v=yEqRyQhhto8。”

关于导入 dll 时的 c++ lnk 2028、lnk 2020、lnk2019 和 lnk2001,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14280582/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com