问题标签 [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 回答
1072 浏览

c++ - 将委托作为回调传递给本机 C++ API 调用

有人可以指出我这段代码有什么问题吗?我在混合 C++ 和 MC++ 方面有过非常艰难的经历。我已经阅读了很多关于这个主题的博客和教程(传递代表),但现在看起来我的代码还可以(它在调试模式下编译和运行良好,并且逐步运行)它崩溃了。

主要问题是它需要一个作为成员函数的 Delegate (需要访问其他类成员)。

我记得 waveInProc 文档中有一条注释说在回调中你不能调用任何系统函数。这应该是导致应用程序崩溃的原因吗,因为它尝试使用其他成员并且托管环境发生在这里调用其他系统方法?

0 投票
2 回答
4352 浏览

winapi - 将本机指针转换为 C++\CLI 托管对象引用?

我有一个通过委托调用的回调。在其中,我需要处理从记录过程到达的缓冲区数据。通常在非托管上下文中,我可以在 dwParam1 上执行 reinterpret_cast 以获取对象引用。但是在托管上下文中,如何将 DWORD_PTR 转换为托管对象引用?

0 投票
2 回答
1401 浏览

c++ - 编译器找不到结构,我应该包括什么

更新:我认为它是 Windsows.hi 需要包含并且您已经确认了这一点,但是当我包含它时,我会收到一堆消息,如下所示......

我不知道如何解决这个问题,哎呀!


我正在尝试调用 PeekMessage,但是当我尝试编译时出现以下错误。

“MSG”:未声明的标识符 “HWND”:未声明的标识符 “PM_REMOVE”:未声明的标识符

我的代码如下...

我知道这些结构是什么,但可以让编译器识别它们。我是否缺少参考或是否有相同的 VC++ 别名?

干杯。

0 投票
1 回答
977 浏览

compiler-construction - 模棱两可的符号

任何人都可以帮助解决这个错误吗?

0 投票
2 回答
1561 浏览

.net - 如何在混合应用程序中进行异常处理?(使用非托管 DLL 的托管应用程序)

是否可以在非托管 DLL 中引发异常并在托管应用程序中处理它?

我的非托管 C++ DLL 会在出现错误时抛出异常,它们应该在调用的可执行应用程序中处理

这以前可行,但现在应用程序使用不同的标志(/clr等)编译,因为我们需要使用一些托管代码。当抛出异常时,我收到一个 System.ExecutionEngineException ,即使在我的调用 exe 中使用 catch(...) 似乎也没有被捕获。

我已经看到编译器选项 /clr 暗示 /EHa 用于异常处理,但据我现在理解,这似乎是选择的选项。

是否有任何其他替代方法(编译器/链接器设置)可以在模块(DLL/exe)边界上抛出和捕获异常?

谢谢你的支持!马可

0 投票
3 回答
353 浏览

c# - 可以在不使用托管 c++ 的情况下将 C++ dx 渲染器嵌入到 C# 应用程序中吗?

我有一个用 C++ 和 directX 编写的渲染器。我现在想编写一个(关卡/场景/UI)编辑器,如果可能/现实的话,我更愿意用 C#/.net 编写我的编辑器的界面

这是完全可行的,而无需遵循托管 C++ 的路线?我可以在没有托管 c++ 的情况下将渲染器中的必要接口公开给 C# 应用程序吗?

0 投票
3 回答
982 浏览

c# - 托管 C++ 和 C# 之间有什么区别?

我看到使用 C++ 而不是 C# 的主要优势是编译为本机代码,因此我们可以获得更好的性能。C# 更简单,但可以编译为托管代码。

为什么有人会使用托管 C++?它给我们带来了什么好处?

0 投票
4 回答
84750 浏览

c# - 如何从 C# 调用 C++/CLI?

我有一个用 C++ 实现的类,负责程序的算术计算,以及一个使用 WPF 的接口。我用 C# 处理输入,但是我怎样才能使用我的 C++ 类呢?

我已经看到一些关于制作托管 C++ 包装类以与之交互的评论,但我不知道从哪里开始。我也不知道如何将它与所有其他代码一起编译。我真的找不到这方面的教程,谷歌在托管 C++ 上展示的东西似乎并没有帮助。

有什么可以帮助我的吗?这对我来说似乎不无道理。

编辑尝试了 m3rLinEz 解决方案,但它给了我一个 BadImageFormatException,我认为这是因为没有生成 DLL。我按照说的做了,我不知道发生了什么。有任何想法吗?

0 投票
2 回答
1035 浏览

.net - 在托管 C++ 中从 BSTR 创建 System::String 对象 - 这种方式是个好主意吗?

我的同事正在通过以下方法使用非托管库中的双字节字符填充 System::String 对象:

其中 GlobalFunctions::CreateObjectForRFCField 创建一个 System::String 对象,其中填充空格(用于填充)到非托管库规定的最大长度应为:

并且 GlobalFunctions::ReadRFCField() 将库中的数据复制到创建的 String 对象中并保留空格填充:

现在,有时我们会在 _snwprintf 调用中看到访问冲突。我的问题真的是:创建一个填充长度的字符串(理想情况下预先分配内部缓冲区)是否合适,然后使用 GCHandle::Alloc 和上面的混乱来修改字符串。

是的,知道 System::String 对象应该是不可变的——我正在寻找一个明确的“这是错误的,这就是为什么”。

谢谢,伊莱。

0 投票
1 回答
783 浏览

list - 如何将 pin_ptr 放入通用列表中?

我有一个托管 C++ 方法,该方法将 String^ 列表作为参数

该方法需要使用指向字符串^中内存的指针填充非托管结构

使用 PtrToStringChars 提取 WCHAR* 非常简单

但是我不知道在设计时要分配的 pin_ptr 的数量

我想将固定的 ptr 添加到列表中,类似于下面的 List< pin_ptr< const wchar_t>>

这样做会产生错误 C3225:“T”的泛型类型参数不能是“cli::pin_ptr”,它必须是值类型或引用句柄

有没有办法做到这一点?在托管 C++ 中