问题标签 [managed-c++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6008 浏览

pointers - 指向指针托管 C++ 的指针

我有一个旧的 C 库,其函数采用 void**:

我正在尝试从托管 C++ 调用此函数(m_pStuff 是 void* 类型的父 ref 类的成员):

这给了我来自 Visual Studio 的以下错误:

错误 C2440:“static_cast”:无法从“cli::interior_ptr”转换为“void **”

我猜编译器正在将 void* 成员指针转换为我背后的 cli::interior_ptr。

关于如何做到这一点的任何建议?

0 投票
3 回答
1622 浏览

.net - 用于在托管 C++ 代码中查找内存损坏的工具

我有一个 .NET 应用程序,它使用开源 C++ 压缩库来压缩图像。我们正在通过托管 C++ 访问 C++ 库。我在压缩期间看到堆损坏。对 _CrtIsValidHeapPointer 的调用在压缩后清理时发现调用 free() 时出错。

是否有诸如Purify之类的工具来帮助诊断此问题,以及在托管和非托管代码的组合中工作时导致堆损坏的原因是什么?我确实在调试器中捕获了异常,但如果有其他工具可以帮助找到问题的解决方案,那就太好了。

0 投票
2 回答
7265 浏览

.net - 如何将 IntPtr 转换为 Stream?

MemoryStream将需要一个byte[],但如果可能的话,我想不复制数据的情况下这样做。

0 投票
6 回答
29076 浏览

c# - 在 C++(win32 应用程序)中使用 C# 类时出现 EEFileLoadException

出于部署原因,我尝试使用 IJW 在 C++ 中包装 C# 程序集,而不是使用 COM Callable Wrapper。

我在其他项目上做过,但在这个项目上,我得到了一个 EEFileLoadException。任何帮助,将不胜感激!

托管 C++ 包装代码(在 DLL 中):

测试代码(这是一个EXE):

值得一提的是,事件日志报告以下内容:.NET 运行时版本 2.0.50727.143 - 致命执行引擎错误 (79F97075) (80131506)

不幸的是,微软没有关于该错误的信息。

0 投票
6 回答
54032 浏览

c++ - 托管 C++ 和 C++ 之间的区别

第二个问题是:我什么时候使用这两者中的哪一个?

0 投票
2 回答
3673 浏览

c++-cli - 是否有任何工具可以将托管 C++ 转换为 C++/CLI?

我们有一个使用托管 C++ 语法编写的旧项目。我想向团队提出一种合理无痛的更新方法(我不介意某种程度的人际互动,我认为我的期望是现实的,我们仍然必须手动完成一些工作)更新方法将现有代码转换为 C++/CLI 语法,以便我们还可以添加 XML 文档(该项目是其他项目的库,拥有文档将非常有用)。

那么,有什么好的工具可以帮助解决这个问题吗?还是只是切换到新的 C++/CLI 语法编译器并在我们进行时修复错误?

0 投票
1 回答
3610 浏览

.net - 托管 C++ 程序集属性

有没有办法将程序集属性添加到托管 C++ 程序集?在典型的 C# 项目中,文件中通常有一行代码,AssemblyInfo.cs如下所示:

[assembly: AssemblyTitle("Some Assembly")]

我有一个要添加的私有程序集属性(不是可以通过资源文件添加的版本属性之一),我不确定这是否可行。

0 投票
3 回答
4413 浏览

.net - 在非托管代码中处理托管委托

我知道我可以让它在技术上工作,但我想实施最干净的解决方案。情况如下:

我有一个托管库,它包装了一个非托管 C 风格的库。我目前包装的 C 风格库功能会进行一些涉及字符串列表的处理。库的客户端代码可以提供一个委托,这样在列表处理过程中,如果遇到“无效”的场景,库可以通过这个委托回调给客户端,让他们选择使用的策略(抛出异常,替换无效字符等)

理想情况下,我希望将所有托管 C++ 隔离在一个函数中,然后能够调用一个单独的函数,该函数只接受非托管参数,以便所有本机 C++ 和非托管代码在这一点上被隔离。为这个非托管代码提供回调机制被证明是我的症结所在。

在这个片段中,我想在 ProcessList 中保留所有 C 库访问,但是在处理过程中,它需要做回调,并且这个回调以 InvalidStringFilter 委托的形式提供,该委托是从一些客户端传入的我的托管图书馆。

0 投票
5 回答
5249 浏览

c++ - 如何在非托管 C++ 中捕获托管异常(来自委托)?

我有非托管 C++ 通过 Marshal::GetFunctionPointerForDelegate 提供的函数指针调用托管委托。该委托有可能引发异常。我需要能够在我的非托管 C++ 中正确处理此异常,以确保诸如指针清理之类的事情,并可能将异常重新抛出到更多托管代码中。调用堆栈类似于:

托管代码 -> 非托管 C++ -> 通过委托回调托管代码(此处可以抛出异常)。

任何人都有正确处理这种情况的指针,以便可以清理非托管代码中的资源,并且可以向启动整个调用堆栈的托管代码抛出可用异常?

0 投票
1 回答
681 浏览

c# - 将 DataTable 传递给非托管环境(visual c# 2005)

将数据表数据传递到非托管环境的最佳方法是什么?(c++)

提供