gpt4 book ai didi

c++-cli - 在 C++/CLI 中使用 PIMPL 习惯用法时的 MSVC++ 链接器警告

转载 作者:行者123 更新时间:2023-12-04 07:11:03 26 4
gpt4 key购买 nike

我正在使用 C++/CLI(9.0 版)编写一个 .NET 程序集,并且我想使用 PIMPL 习惯用法来避免在我的公共(public) header 中放置不必要的东西。不幸的是,当我尝试转发声明一个类,然后对其使用跟踪句柄时,我收到链接器警告 4248:

warning LNK4248: unresolved typeref token (0100000E) for 'MyNamespace.PrivateClass'; image may not run



无论我对实现类使用 CLI 类还是 native 类,这似乎都是这种情况。

示例代码如下所示:
namespace MyNamespace
{
ref class PrivateClass; // forward dec

ref class MyPublicClass
{
private:
PrivateClass^ m_Imp;
};
}

不幸的是,微软对警告的解释并没有提供太多信息。

最佳答案

我认为您使用的两种技术并不能很好地结合在一起:

pimpl 的自然应用是避免必须一直更改头文件,从而导致大型 C++ 项目的大量重新编译。

C++/cli 的自然应用是编写精简的小互操作 block ,VS 在这些项目上的默认行为是将所有代码放入 header 中,这与您可以得到的反 pimpl 差不多。

如果您正在编写足够大的内容以保证 pimpl,我不会推荐 C++/cli。如果您正在编写足够小的东西以使 C++/cli 适合,我不会为 pimpl 烦恼。

当然是 YMMV,但那是我的看法……

关于c++-cli - 在 C++/CLI 中使用 PIMPL 习惯用法时的 MSVC++ 链接器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335271/

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