gpt4 book ai didi

c++ - 将非托管 C++ dll 添加到托管 C++ dll

转载 作者:行者123 更新时间:2023-11-28 07:50:42 28 4
gpt4 key购买 nike

我正在尝试将非托管 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# 能够使用长整型数组作为索引器。如果您以前使用过任何数量的 .Net,您可能会遇到 CLR 中对象大小的 Int32/Uint32 限制。我希望通过在 C++ 领域实现数组,然后针对它修改/编译一些 Mono Collections.Generics 类来解决这个问题,从而给我们一些喘息的空间。我做 C# -> C++/CLI -> C++ 的原因是,根据我的研究,我们可以使用面向对象的代码; DllImport 的东西只适用于类似 C 的函数,我想保留 OOP,而不是修改东西以像 C 一样工作。由于数组是 List 等类的构建 block ,据我所知,是 Collections 命名空间的构建 block ,让它们在 64 位领域运行将为我们提供其他一切。

最佳答案

您需要添加一个新项目,而不是一个新类。 “添加项目”后,系统会询问您要添加什么类型的项目,纯 C++ DLL 将是您的选择之一。

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


补充说明:

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

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

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

关于c++ - 将非托管 C++ dll 添加到托管 C++ dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13851104/

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