gpt4 book ai didi

头文件 LNK2019 中的 C++ API 实现

转载 作者:行者123 更新时间:2023-11-28 02:27:49 27 4
gpt4 key购买 nike

我的解决方案中有 3 个项目:项目_I项目_A项目_B

Project_I 仅包含头文件(无cpp),此项目在头文件中定义接口(interface),Project_AProjects_B 从中派生并实现.

由于我希望 Project_I 接口(interface)方法中的默认行为抛出 NOT_IMPLEMENTED_EXCEPTION(我的 std::exception 子类型),对于 Project_I< 中声明的每个方法 interfaces (header files) 我在头文件中写了这个实现,我也在头文件中实现了 C'TOR。

现在,当我尝试编译解决方案时(在定义项目依赖项等之后...)我收到以下错误

Error   1   error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl Project_I::ClassA::ClassA()" referenced in function "public: __cdecl Project_B::ClassA_1::ClassA_1 K:\src\Project_B\ClassA_1.obj

为什么VC++编译器在project_I(后面需要构建)中寻找ClassA.obj文件如果有根本没有cpp文件(整个实现都在头文件中)?

最佳答案

如果您的 Project_I::ClassA 是在头文件中实现的,它根本不会被编译到 dll 中(当然,除非头文件包含在 Project_I 的某个 cpp 文件中)。

因此,您有两个选择:创建一个 cpp 文件并包含包含 ClassA 定义的 header ,或者从中删除任何 __declspec 声明。

关于头文件 LNK2019 中的 C++ API 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29923413/

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