0

我正在尝试将非托管 C++ dll 添加到托管 (CLI) C++ dll 项目中。当我单击“类向导”时,我收到“MFC 类只能添加到 MFC 项目”错误消息。据我所知,我没有使用 MFC(在我的非托管 dll 的项目页面下,使用 MFC 是空白的)。是否有另一种方法可以将非托管 dll 添加到我的托管 dll 的项目中?

对于任何有兴趣的人,我已经在我的 DropBox 帐户上抛出了稀有的解决方案:https ://dl.dropbox.com/u/98752313/CplusplusArrayTest.rar

我意识到有太多设置可能对我来说是错误的,无法简单地将所有内容复制并粘贴到可用空间中。

此解决方案中有三个项目。CplusplusArray(应该是完整的,是非托管的.dll),ManagedCpluspplusArray(需要添加非托管的dll,并修改一些东西,是托管的.dll),以及一个C#测试程序(还没写,希望能和大佬交流)非托管 dll 通过托管 dll)。

如果您想知道,这个项目的整个目标是让 C# 能够使用带有 long 的数组作为索引器。如果您以前使用过任何数量的 .Net,您可能已经遇到了 CLR 中对象大小的 Int32/Uint32 限制。我希望通过在 C++ 领域实现数组,然后针对它修改/编译一些 Mono Collections.Generics 类来解决这个问题,从而给我们一些喘息的空间。我做 C# -> C++/CLI -> C++ 的原因是,根据我的研究,我们可以使用面向对象的代码;DllImport 的东西只适用于类 C 的函数,我想保留 OOP,而不是修改东西以像 C 一样工作。由于数组是 List / etc. 类的构建块,据我所知,Collections 命名空间,

4

1 回答 1

1

您需要添加一个新项目,而不是一个新类。一旦你“添加项目”,你会被问到你想添加什么类型的项目,一个普通的 C++ DLL 将是你的选择之一。

在解决方案中拥有两个项目(C++/CLI DLL 项目和 C++ DLL 项目)后,您可以转到工作区依赖项并指出其中一个依赖于另一个。


补充说明:

类向导是关于添加 MFC 类的。因为您对添加 MFC 类不感兴趣,所以这不是正确使用的工具。

当我编写了一个使用本地 C++ DLL 的 C++/CLI DLL 时,我需要添加指令以链接到 C++ DLL 的导入库。这是在
“项目属性 > 配置属性 > 链接器 > 输入 > 附加依赖项”中配置的

工作区依赖保证首先构建非托管库,并且如果更新了非托管库,托管库将在需要时重新编译或重新链接。

于 2012-12-13T00:32:53.490 回答