c++-cli相关内容
我有一个用托管代码 (C++/CLI) 编写的 COM 对象.我在标准 C++ 中使用该对象. 当 COM 对象被释放时,如何强制我的 COM 对象的析构函数立即被调用?如果这不可能,请调用我的 COM 对象上的 Release() 调用 MyDispose() 方法? 我声明对象的代码(C++/CLI): [Guid("57ED5388-blahblah")][接口类型(ComInte
..
我有 C++ 基础库,客户端应用程序是 C#.有 c++/cli 接口可以从 C# 访问 c++ api.在没有像 NUnit 或 WCF 托管这样的多个应用程序域发挥作用(即使用一个应用程序域)之前,每件事都可以正常工作. 我已将托管对象存储在 cli 的 gcroot 中以供回调.我已经读到这是应用程序域问题的根本原因(“无法跨 AppDomains 传递 GCHandle"),因为它们
..
我正在尝试制作一个在命令提示符下运行的小型 2 人游戏.在我开始研究玩家控制之前,一切都很好.因此,对于捕获键盘键,我认为最好的解决方案是使用 getch() 函数.那是因为 getch() 即时获取键,而不是在屏幕上显示它,等待输入或其他键被按下. 据我所知,实现这一点的代码相当简单: c=getch();开关(c){case 'a': 让玩家 1 向左走休息;case 'd': 让玩家
..
我基本上是在尝试在 Visual Studio 2008 中编写一个基本的转换器,我有 2 个文本框,一个用于获取用户的输入,一个用于输出结果.当我按下按钮时,我希望第一个文本框中的输入乘以 4.35,然后显示在第二个文本框中.到目前为止,这是我在按钮代码中的代码: String^ i1 = textBox1->Text;浮动 rez = (i1*4.35)ToString;textBox2-
..
我正在使用 .NET DateTime 来获取当前日期和时间.我将其转换为字符串以用作文件名的一部分.问题是保存图像的 OpenCV 命令需要 char * 而不是字符串类型,而 DateTime 只会输出 String^ 类型.我该如何进行这项工作?这里的代码没有完成 String^ nowString = DateTime::Now.ToString("yyyy-MM-dd-HH:mm");
..
我正在用 C++/CLI 开发一个应用程序,并有一个非托管代码的 csv 文件写入库,我想从托管部分使用它.所以我的函数看起来像这样: bool CSVWriter::Write(const char* stringToWrite); ...但我真的很难将闪亮的 System::String^ 转换为兼容的东西.基本上我希望通过以下方式打电话: if(m_myWriter->Write(St
..
如何将系统 (.net) C++\CLI String^ 转换为 MFC C++ LPCTSTR 字符串. 将 LPCTSTR 放入 String^ 非常容易,但到目前为止还没有发现相反的方法. 解决方案 如果您有 Visual Studio 2008 或更高版本,您应该可以使用 C++/CLI 编组库来执行此操作,如下所示: #include 使
..
我的混合模式 MFC 应用程序正在创建错误的内存泄漏,因为在 MFC dll 关闭之前 CRT 没有时间关闭. 我有一个非常简单的小应用程序可以显示问题: #include #include 结构 LongTimeToDestroy{~LongTimeToDestroy(){std::cout
..
我想创建一个 Windows 窗体控件,该控件显示一个 MFC 控件,例如 CIPAddressCtrl,具有工作的 Text 属性和 TextChanged 事件.如何在 Windows 窗体应用程序中显示 MFC 控件?如有必要,我很乐意使用 C++/CLI. 注意:我不是在问如何创建一个全新的窗体控件.我想在 Windows 窗体应用中托管旧版控件. 解决方案 这篇文章 提供了
..
我的 C++ MFC 代码中有一个 HWND,我想将此 HWND 传递给 C# 控件并将其作为 IntPtr 获取. 我的代码有什么问题,我该如何正确处理?(我认为使用 CLI 指针有问题,因为我收到一个错误,它无法从 System::IntPtr^ 转换为 System::IntPtr.但我不知道如何让这一切正常工作...) 我的 C++ MFC 代码: HWND myHandle
..
使用 Visual Studio 2015 Update 1,当在 Post-构建事件:AL.EXE应用程序崩溃,系统返回错误码-1073741819(0xC0000005). 这里是构建后事件的内容: sn -Rca "$(SolutionDir)bin\$(Configuration)\$(Platform)\$(TargetName)$(TargetExt)" dwoResgen "
..
我正在处理的项目中遇到新的链接器错误: 1>MSVCMRTD.lib(locale0_implib.obj) : 错误 LNK2022: 元数据操作失败 (8013118D) : 重复类型中的布局信息不一致 (std.basic_string,std::allocator>): (0x0200004e).1>MSVCMRTD.lib(locale0_implib.obj):错误 LN
..
我有一个包含很多项目的大型解决方案,使用 VS2008 SP1,并且每天至少遇到一次 LNK2022 错误.如果我完全重建解决方案,它构建得很好,但这并不好玩. 当依赖的 DLL 被“轻微"更改(即不更改任何方法或类)时会发生这种情况,并且稍后会构建引用项目.合并元数据时失败 - 不管这意味着什么. 首先要注意的是,共享 DLL 是通过多个 .CPP 文件中的 #using 引用的.
..
这篇文章 说可以关闭单个 .cpp 文件的 CLR 标志. 来自帖子:您可以在每个 .cpp 文件中单独设置/CLR 打开或关闭.开启它整个项目,.正如你所做的那样,然后关闭它的文件仅包含本机(非托管)代码.当您拥有 VC++ 项目时属性对话框打开,您仍然可以单击文件/项目解决方案资源管理器来更改您正在处理的范围.点击非托管 .cpp 文件,以便仅为该文件设置选项. 这是真的吗?我不知
..
我有一个包含大量项目的大型解决方案,使用 VS2008 SP1,并且每天至少遇到一次 LNK2022 错误.如果我对解决方案进行完全重建,它会很好地构建,但这并不有趣. 当依赖的 DLL 发生“微不足道"更改(即不更改任何方法或类)并且稍后构建引用项目时,就会发生这种情况.合并元数据时失败 - 无论这意味着什么. 首先要注意的是,共享 DLL 是通过 #using 从多个 .CPP 文
..
我使用的是 Visual Studio 2008、.NET 3.5 SP1,并且有一个包含以下模块的测试应用程序: 一个 C++ DLL 使用 #1 的 C++/CLI DLL 使用 #2 的 C# WPF 应用程序 当我尝试将 #2 中的类用作 WPF XAML 中的资源时,设计者不会让我: 错误是:“未找到程序集 'ClassLibrary1'.请确认您没有丢失程序集引用
..
SQLGetDiagRec 返回本机错误代码.有没有关于 SQL Server 2012 错误代码的概述?我在 MSDN 上找不到任何内容. 解决方案 我无法在 Internet 上找到各个代码的列表.但是我确实找到了严重级别的列表here 在 MSDN 上.它们如下: 严重程度/描述 0-9:返回状态信息或报告的信息性消息不严重的错误.数据库引擎不提升系统严重性为 0 到 9
..
我正在编写一个供本机 C++ 应用程序使用的 C# 库.我使用 C++/CLI 作为互操作性机制. 我需要将回调函数从 C++ 传递到 C#(使用 C++/CLI 作为中间层).C# 库需要使用以零结尾的宽字符字符串调用 C++ 函数;即回调函数的原型是 Func(LPCWSTR pszString); 还有其他参数,但它们对本次讨论无关紧要. 我在网上搜索并找到了我可以使
..
我有两个 c++/cli dll(即使用/clr 编译),其中 A.dll 引用 B.dll.在程序集 B 中,我有一个方法 GetMgdClassB,我想从程序集 A 中调用.这是程序集 B (B.cpp) 中的代码: 命名空间 B{公共类 NativeClassB{上市:NativeClassB();//...};公共引用类 MgdClassB{上市:静态 MgdClassB ^ GetMg
..
不久前我写了一个 C++ CLI Windows 窗体应用程序,它在 Visual Studio 2013 中编译得很好.现在我想在 Visual Studio 2015 Update 1 中重新编译它,但我遇到了一个问题,经过数小时的测试,我想罪魁祸首是afxwin.h. TL;DR - 有什么方法可以使用 stdafx.h(所以 afxwin.h 和所有其他导入) 在使用 Visual
..