提问人:Bob Michaelsen 提问时间:7/8/2020 更新时间:7/8/2020 访问量:289
未解析的外部符号 (LNK2001) 在 .obj 文件中清晰可见
Unresolved external symbols (LNK2001) are clearly found in .obj file
问:
假设有 和 。
有许多私有静态数据成员,并为这些成员实现了一些 getter,因此它们可以从外部读取但不能写入。
includes ,但不对 的方法进行任何调用。
请注意,这些类分别是它们自己的 dll 的一部分。 作为一个整体,它被标记了,所以它应该是可见的。class A
class B
Class A
Class B
A.h
A
Class A
__declspec(dllexport)
在 Visual Studio 中构建它没有问题。
我的公司也需要我使用内部脚本进行构建,但这行不通。
我认为该脚本基于 gms-make,但我不确定。我也不知道那里使用了什么编译器或链接器。
把这个东西扔进我们的剧本里,我就进去了。
无法解析的符号是里面的私有静态数据成员。
当我查看使用 DUMPBIN 的符号时,我可以找到所有这些符号。
(我不太确定他们是否应该在那里,但他们确实在那里。LNK2001: unresolved external symbol
B.obj
class A
B.obj
更重要的是,另一个类,位于另一个dll中,可以从中导入所需的所有信息。无论是在 VS 中还是在我们的脚本中,即使设置与 .class C
class A
class B
删除使链接器再次感到高兴,但我需要在那里使用它。#include "A.h"
B.cpp
我被告知问题不在于链接器,而在于我的代码,那么我可能做错了什么?
另外,为什么要尝试将符号解析为另一个类的私有成员?这些不应该是看不见的吗?class B
答: 暂无答案
评论
__declspec
dllexport
A
dllimport