managed-c++相关内容
托管 C++ 是否具有与 C# 等效的 lock() 和 VB 的 SyncLock?如果是这样,我该如何使用它? 解决方案 锁/SyncLock 的等价物是使用 Monitor 类. 在 .NET 1-3.5sp 中,lock(obj) 会: Monitor.Enter(obj);尝试{//做工作}最后{Monitor.Exit(obj);} 从 .NET 4 开始,它将是:
..
我似乎无法在任何地方找到这个问题的答案,但 Metro 是否支持托管 C++?目前在 Visual Studios 2012 RC 中没有(仅在 Metro 中). 我有一些用 c++/cli 编写的框架,想将它们移植到 Metro.我知道 c++/cx 是相似的,但是我的 c++/cli 对象派生自用 C# 编写的对象,并且必须重写我系统的那一部分会很糟糕(但如果我这样做,我只需要知道从这
..
我在使用 /clr 编译选项时在 VS2008 中链接 C++ 项目时遇到问题.我收到以下构建错误: Class1.obj : 错误 LNK2022: 元数据操作失败 (8013118D) : 重复类型中的布局信息不一致 (_PROPSHEETPAGEA): (0x0200046f).Class1.obj:错误 LNK2022:元数据操作失败(8013118D):重复类型(_PROPSHEETP
..
我有一个很久以前创建的 dll,用于连接到我为其开发的特定软件的数据库.4 年多来,我使用这个 dll 的应用程序数不胜数. 尝试部署我的最新作品时,出现以下错误: System.IO.FileNotFoundException:无法加载文件或程序集“***.dll"或其依赖项之一.指定的模块无法找到. 因此,对于我写过的每个 dll,我总是制作一个简单的表单应用程序来单独测试该 dll
..
第二个问题是:我什么时候使用这两个? 解决方案 如果未指定,C++ 是非托管 C++,编译为机器码.在非托管 C++ 中,您必须手动管理内存分配. 托管 C++ 是 Microsoft 发明的一种语言,可编译为由 .NET Framework 运行的字节码.它主要使用与 C++ 相同的语法(因此得名),但编译方式与 C# 或 VB.NET 相同;基本上只有语法变化,例如使用 '->'
..
我在部署一个应用程序时遇到了一个奇怪的问题,该应用程序引用了一个用托管 C++ 编写的程序集. 我创建了一个程序集 X,编译它并在一个名为 Starter 的 exe 文件中引用它. Starter.exe 在本地机器上正常启动.但是,当我将 starter 调试文件夹的所有内容复制到虚拟机并尝试在那里启动时,它会崩溃并出现以下异常: 未处理的异常:System.IO.FileNot
..
我们的项目结构是这样的, native.dll :- 这包含用 c\c++ 编写的纯本机代码.这个 native.dll 使用 *def 文件公开了一些函数. Wrapper Library(wrapper.dll 用 .Net framework v4.0 编译) :-为了使用 native.dll 的功能,需要一个 Wrapper lib(wrapper.dll)使用 :clr\o
..
我在部署一个应用程序时遇到了一个奇怪的问题,该应用程序引用了一个用托管 C++ 编写的程序集. 我创建了一个程序集 X,编译它并在一个名为 Starter 的 exe 文件中引用它. Starter.exe 在本地机器上正常启动.但是,当我将 starter 调试文件夹的所有内容复制到虚拟机并尝试在那里启动时,它会崩溃并出现以下异常: 未处理的异常:System.IO.FileNot
..
并且是否可以将数组转换为 字节>^ 到一个字节*? 以下代码需要如何更改才能返回一个字节*? array^ StrToByteArray(System::String^ unicodeString){UTF8Encoding^ utf8 = gcnew UTF8Encoding;数组^encodedBytes = utf8->GetBytes( unicodeString );返回编码字
..
首先,我想说明的是,我对 C++ 完全陌生,所以这可能是一个简单且有些明显的问题.在我正在阅读的 C++ 书籍 C++ Primer 中,通过以下方式定义了一个类: class 类名{民众:私人的:}; 然而,在 VS2008 中,编译器并不喜欢这样.但是通过在类之前添加公共引用,如: public ref class classname{ 它在编译器中通过了.谁能解释一下仅使用类定义和使
..
我有一个用 C++ 编写的 dll,正在像这样导出: extern "C" {extern _declspec(dllexport) (VOID) 合并(LPCSTR szFileName, LPCSTR szMergeString, DWORD dwAlignment, BOOL fRepeat);} 该函数在别处定义为: extern _declspec(dllexport) (VOID
..
我遇到了错误:崩溃发生在本地代码中的 Java 虚拟机之外.每当我使用带有本机库和 .net 模块文件的类文件运行时,它都可以正常工作.但是当我尝试单独运行类文件和本机库时,它会崩溃.请澄清我所做的错误,请查看我的代码.供您参考参数 ============================================ 公共类 Sum{public int add(int a, int
..
我有几个非托管 C++ 编写的 lib 文件,我需要将它们链接到托管 C++ dll. 然后我需要从 C# 应用程序调用这个托管 C++ 的函数. 第一步没问题 - 创建了托管 C++ dll,我可以用 ildasm 看到它导出了我需要的函数.但是,当我尝试从我的 C# 编写的测试应用程序中调用此函数时,它说: 在未知模块中发生类型为“System.IO.FileLoadExcept
..
我正在导出可以从非托管代码中调用的方法,但是该函数本身位于托管c ++项目中.以下代码导致编译器错误: 错误C2526:'System :: Collections :: Generic :: IEnumerator :: Current :: get':C链接函数无法返回C ++类'System :: Collections :: Generic :: KeyValuePair
..
我想通过使用dllexport导出功能.但是我在编译器“错误C4439:'WrappedC':签名中具有托管类型的函数定义必须具有__clrcall调用约定"时遇到了错误. 我在头文件(.h)中的代码是: 外部"C"{__declspec(dllexport)int __stdcall ABC(int i);__declspec(dllexport)char * __stdcall C(i
..
我正在尝试在托管C ++(.NET 2.0)中处理IDisposable对象(FileStream ^ fs)并收到错误消息 Dispose':不是'System :: IO :: FileStream 的成员 它说我应该改为调用析构函数.会打电话 fs->〜FileStream(); 在FileStream对象上调用dispose方法吗?为什么我不能打电话给Dispose?
..
简介: 托管( / clr )C ++项目( .dll )静态链接本机C ++库(使用 / MD 编译)。静态库很大,并引用了许多其他库,但是托管C ++代码使用的功能微不足道,不应引入任何其他依赖项。 问题: 由于 LNK2001 和 LNK2019 提到代码绝对不依赖的符号 即使我添加了必需的依赖项,也要切换工具集(例如,从 VS2017 迁移到 VS2019 )导致错误再
..
我正在尝试使用cmake生成托管的c ++代码。以下是我为此添加的脚本 SET_TARGET_PROPERTIES($ {PROJECT_NAME} PROPERTIES COMPILE_FLAGS“ / clr”) STRING(替换“ / EHsc”“ / EHa” CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS}) STRING(替换“ / RTC1”“”
..
A.dll是本机c ++ dll,B.dll是托管c ++ dll。 A.dll依赖于B.dll,因此在加载A.dll时,会自动加载B.dll,但是在卸载A.dll之后,仍会加载B.dll。只有A.dll依赖于B.dll,为什么无法卸载B.dll?如何卸载托管C ++ dll?我正在使用vs2010。 谢谢 解决方案 您无法卸载由CLR加载后的托管程序集。唯一的方法是杀死AppDom
..
我在C ++中有一个函数,其值在std :: string类型中,并且想将其转换为String ^。 void(String ^ outValue) { std :: string str(“ Hello World”); outValue = str; } 解决方案 Google搜索显示 marshal_as (未经测试): // marshal_a
..