草庐IT

互操作性

全部标签

c++ - COM 互操作 : how to use ICustomMarshaler to call 3rd party component

我想使用COM互操作从C#调用COM组件中的方法。这是方法签名:longGetPrecursorInfoFromScanNum(longnScanNumber,LPVARIANTpvarPrecursorInfos,LPLONGpnArraySize)这是在C++中调用它的示例代码(我检查过它确实有效):structPrecursorInfo{doubledIsolationMass;doubledMonoIsoMass;longnChargeState;longnScanNumber;};voidCTestOCXDlg::OnOpenParentScansOcx(){VARIANTv

C++ 到 D 的互操作性

自从我开始尝试从C++调用一些D代码(使用为C++和D定义的类/接口(interface))。D代码moduleBufferCppBinding;extern(C++)void*createBufferCppBinding(){BufferCppBindingptr=newBufferCppBinding();returncast(void*)ptr;}extern(C++)interfaceBufferCppBindingInterface{voidconstruct();//...}classBufferCppBinding:BufferCppBindingInterface{pu

c++ - 在 C++/FORTRAN 互操作中处理字符串的官方方法是什么

我想了解C++/FORTRAN互操作性的最新改进,尤其是在涉及字符串时。以下是我未成功的尝试,请大家帮我指正或提出更好的解决方案。我的编译器是gcc4.8.5在C++中#includeextern"C"{voidSayHello(char*);}intmain(intargc,char**argv){char*name=argv[1];SayHello(name);return0;}用Fortran语言moduleMyModulecontainssubroutineSayHello(people)bind(c,name="SayHello")use,intrinsic::iso_c_b

c# - 我的 C++ 和 C# 互操作在 64 位中崩溃,为什么?指针大小?

我有一个native32位dll(无源代码),它在我使用的应用程序中作为插件运行。我自己做了另一个nativedll,它将与该插件通信以创建和更新插件的控件。我从那个dll导出了我需要的功能,以便从我的c#应用程序(使用p/invoke)控制插件。代码如下:h文件:#pragmaonce#include"include\SpoutControls.h"extern"C"{__declspec(dllexport)voidInitializeControls(char*sendername,int*numControls,char**names,int*types,float*float

c# - 如何通过 COM 互操作将字符串集合从 C# 返回到 C++

我在C#中为某些Display方法创建了一个com组件,它返回一个字符串列表如下图。在v++中,我使用std::lst来捕获Disp()的返回值,但它给出Disp不是类成员的编译器错误。然后我将返回类型设置为void它工作正常。我可以修改什么以便Disp返回一个列表并且在main(c++)中我必须使用这个返回值。PublicinterfaceITest{ListDisp();}classTestLib:ITest{ListDisp(){Listli=newList();li.Add("stack");li.Add("over");li.Add("Flow");returnli;}}成功

c# - 寻找 C++ 到 WPF/Cocoa 互操作性的跨平台、端到端示例

首先,一些背景:我决定开始一个从头开始设计的新项目,以在多个平台(Windows、iOS、OSX、Linux、Android)上运行。由于我的背景主要是C++,所以我打算使用C++11编写核心功能。也就是说,在每个平台上,我都需要编写一个特定于平台的UI,该UI可以与C++核心进行互操作。我的第一个目标平台是Windows(第二个是iOS)。我会将数据存储在SQLite数据库中,以及将使用WPFDataGrid输入的用户提供的数据(插入行、操作现有数据等)。这是我第一次使用WPF(尽管我使用过Windows窗体),也是我第一次在托管环境中使用C++。我计划将其打造为MVC风格的架构,因

c# - 在互操作(C++ 管理)项目中使用 C# dll(使用 Microsoft.bcl 构建)

我们在.net4.0中有一个C#DLL,但使用Microsoft.bcl、Microsoft.bcl.async、Microsoft.bcl.build、M​​icrosoft.net.http构建。这些库来自nuget。我们有理由不迁移到.net4.5,但想使用异步,等待这些bcl库。在C#项目中一切正常,但我们无法在C++互操作项目中添加此DLL,我们收到此错误:当我们尝试将此引用添加到项目时出现此错误。即使clrinterop项目也在.net4.0中,并且我们添加的DLL也在.net4.0中,但我们最终会收到此错误。有办法解决这个问题吗?Errorintextformat:---

c++ - 结构作为基类 - C/C++ 互操作性

我记得我在某处看到过一些代码,这些代码曾经将结构作为基类,将C++类作为派生类structBase_Struct{}classDerived:Base_Struct{...}重点是指向Base_Struct*的指针从C++文件传递​​到一些C文件,然后这些文件设法使用Base_Struct中的一些函数指针。我的问题是:如果我将Base_Struct*传递给C文件,C代码是否能够完全使用Base_Struct?派生类呢? 最佳答案 IfIpassBase_Struct*toaCfile,willtheCcodebeabletouset

谷歌斥资100万美元,消除C++内存安全问题,C++与Rust可以“互操作”

编辑| 言征出品|51CTO技术栈(微信号:blog51cto)为了消除基于C++的Android应用中的内存错误,Google希望让开发人员能够轻松地用Rust编写代码。本周一,谷歌承诺向Rust基金会捐赠100万美元,以改善C++和Rust编程语言之间的互操作性。图片根据公告,虽然该项目被称为“互操作倡议(InteropInitiative)”。谷歌Android平台工具和库总监兼Rust基金会董事会主席LarsBergstrom宣布了这笔拨款,并表示这笔资金将“提高Rust代码与现有遗留C++代码库互操作的能力”。其目标本质上更加单向,即让“组织逐渐将当前的C++迁移到Rust”。Rus

c# - native C++ 和 C# 互操作

所以我正在构建一个应用程序,该应用程序必须使用C++工作,但MFC/ATL对我来说太乱了,所以我有一个绝妙的想法,即用原生C++编写所有“思考”代码和所有漂亮的UI代码在C#中。但是,问题在于它们两者之间的互操作性。在我对此太过投入之前,我想知道这是否是一个已解决的问题,并且有一个非常好的方法可以做到这一点。请注意,我不想在同一个模块中混合逻辑和显示,因为它会产生恼人的高耦合。这是我目前所拥有的:那么告诉我,它可以做得更好吗? 最佳答案 处理此问题的最简单方法是使用C++/CLI,并将您的逻辑公开为.NET类型。将原生C++类包装在