问题标签 [c++-cli]

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 回答
514 浏览

.net - .NET 程序集未从 NTVDM 加载

我有一个 VDD dll,它由NTVDM内运行的 DOS 程序加载。此 dll 使用 C++/CLI 并引用 .NET 程序集。

总而言之,加载过程是这样的:

和文件prntsr.com都在同一个文件夹中prnvdd.dllprnlib.dll

但是,在加载它时,我得到以下异常:

它只搜索C:\WINDOWS\system32\程序集,我猜这是由于 NTVDM.EXE - 因为这是加载程序集的实际过程,它将其位置作为 AppBase。

任何想法如何更改 AppBase 或以其他方式解决此问题?

0 投票
1 回答
3650 浏览

visual-studio - 将现有表单添加到 C++/CLI WinForms 项目

我在不同的解决方案中有两个 C++/CLI 项目 A 和 B。我使用 A 进行实验/测试,并在完成测试后将测试代码移至 B。但是,我发现在向项目 B 添加 Windows 窗体类(标题、cpp 和 resx)时,我不再能够使用 IDE 的可视窗体设计器。我该如何启用它?

0 投票
1 回答
3973 浏览

visual-studio - 使用 Visual C++ 将二维数组写入文件并从文件中读取二维数组

我是 C++ 新手。我组成了 680x680 的二维数组。我试图将它写入 txt 文件。不幸的是,我不能定期沿着它的维度编写二维数组。我也想从 txt 文件中读取二维数组。我的代码在下面。你能帮帮我吗?

此致...

0 投票
6 回答
13318 浏览

c# - C# 到 C++/CLI 到 C DLL System.IO.FileNotFoundException

System.IO.FileNotFoundException: The specified module could not be found在运行调用 C++/CLI 程序集的 C# 代码时得到,该程序集又调用纯 C DLL。只要实例化调用纯 C DLL 函数的对象,就会发生这种情况。

BackingStore 是纯 C。CPPDemoViewModel 是调用 BackingStore 的 C++/CLI,它具有对 BackingStore 的引用。

我尝试了最简单的情况——添加一个新的 C# 单元测试项目,它只是试图创建一个在 CPPDemoViewModel 中定义的对象。我从 C# 项目中添加了对 CPPDemoViewModel 的引用。

只需添加对 CPPDemoViewModel 的引用,C++/CLI 测试项目就可以正常工作,因此它是在语言之间进行切换。

我正在使用带有 .Net 3.5 SP1 的 Visual Studio 2008 SP1。我在 Vista x64 上构建,但一直小心确保我的平台目标设置为 x86。

这感觉就像我错过了一些愚蠢和明显的事情,但浪费时间试图私下解决它会更愚蠢,所以我在这里让自己尴尬!

这是对移植大量遗留 C 代码的项目的测试,我将这些代码保存在 DLL 中,并使用 C++/CLI 实现的 ViewModel。

编辑 检查目录后,我可以确认没有复制BackingStore.dll。

我有使用典型的多项目解决方案创建的标准唯一项目文件夹。

令我惊讶的是,更高级别的 Debug 似乎是 C 和 C++/CLI 项目使用的公共文件夹。

WPFViewModelInCPP\Debug 包含 BackingStore.dll、CPPDemoViewModel.dll、CPPViewModelTest.dll 及其关联的 .ilk 和 .pdb 文件

WPFViewModelInCPP\CPPViewModelTestInCS\bin\Debug 包含 CPPDemoViewModel 和 CPPViewModelTestInCS .dll 和 .pdb 文件,但包含 BackingStore。但是,手动将 BackingStore 复制到该目录并不能修复该错误。

CPPDemoViewModel 具有属性Copy Local set,我假设它负责在引用 if 时复制其 DLL。我无法将 C# 项目的引用添加到纯 C DLL - 它只是说无法添加对备份存储的引用。

我不确定我是否只有一两个问题。

我可以使用老式的复制构建步骤将 BackingStore.dll 复制到任何给定的 C# 项目的目录中,尽管我希望新的 .net 模型不需要这样做。

DependencyWalker 告诉我丢失的文件是 GPSVC.dll,这表明存在安全设置问题。我怀疑这是一个红鲱鱼。

edit2 将BackingStore.dll 的手动副本与可执行文件相邻,GUI 现在可以正常工作。C# 测试项目仍然存在问题,我怀疑这是由于测试项目的运行时环境造成的,但我现在可以不用它。

0 投票
2 回答
6227 浏览

c++-cli - 使用 Predicate 和 Array::FindAll() 编译 C++/CLI 委托调用时出错

以下代码导致 C3867(...函数调用缺少参数列表...)和 C3350(...委托构造函数需要 2 个参数...)。我究竟做错了什么?

0 投票
1 回答
1169 浏览

winforms - Visual Studio C++/CLI Winforms 项目中的设计器生成代码

C++/CLI 项目中的 Windows 窗体设计器在头文件本身中生成所有事件处理程序的声明和定义。它生成的 .cpp 只是一个存根,它仅包含生成的标头和 stdafx.h。我觉得如果我将所有类方法的实现(即定义)移到它们应该属于的 .cpp 中,我可以减少编译时间。当标头在多个位置#included 时,这一点变得尤为重要。

将我的代码拆分为单独的声明 (.h) 和定义 (.cpp) 文件是否有任何缺点或副作用?建议?最佳实践?

0 投票
2 回答
3141 浏览

wpf - System.Windows.Input 对 C++/CLI 不可用?

我正在使用 C++/CLI 中的 ViewModel 开发 WPF 应用程序,因此它可以使用旧版 C 代码。我在将命名空间 System.Windows.Input 暴露给 C++/CLI 代码时遇到问题,想知道这是否是因为 WPF 并不真正支持 C++/CLI?我真的必须插入一个 C# 层才能实现类似 Josh Smith 的CommandSinkBinding吗?

当我尝试在 C++/CLI 项目中添加引用时,我只能看到 System.Windows.Presentation 和 System.Windows.Forms。

C# 程序可以说的地方

我在 C++/CLI 中遇到错误

错误 1 ​​错误 C2039:“输入”:不是“系统::Windows”的成员

0 投票
3 回答
8828 浏览

c# - 在 C# 中使用 C++ CLI 模板类

我在 C++/CLI 中有以下类和 int 原语的显式模板实例化..

在编译它并使用反射器检查生成的程序集时,我能够看到一个调用的类,Number<int>但是在尝试在 C# 中实例化同一个类时,编译器抱怨某些System::Number类没有使用模板参数。我究竟做错了什么?这完全可以做到吗?

0 投票
4 回答
1881 浏览

c++-cli - 使用 C++/CLI 的 Offsetof 宏

offsetof 宏似乎在 C++/CLI 下不起作用。

这在非托管 C++ 中运行良好,但在 CLI 中引发“错误 C2275: 'Entity' :illegal use of this type as an expression”错误。

CLI 有替代品吗?

0 投票
3 回答
5929 浏览

c++-cli - C++/CLI:实现 IList 和 IList(默认索引器的显式实现)

我正在尝试实现一个同时实现IList和的 C++/CLI 类IList<T>

由于它们有重叠的名称,我必须显式地实现其中一个,自然选择应该是 IList。

索引器的隐式实现是:

我现在正在尝试为 IList 声明默认索引器。

我的猜测是这样的:

但这只是给了我

错误 C2061:语法错误:标识符“默认”

有什么提示吗?