在c#的.lib文件中创建一个c++类的实例
Creating an instance of a C++ class in a .lib file from C#
如描述所示。我在其他相当大的c++项目中创建了一些静态.lib文件,其中包含一个我希望能够在c#中使用的类。在c#内部使用这些类的最佳方式是什么?c++库不受管理
到目前为止,最简单的选择是在c++/CLI中构建一个包装器库。
恐怕在c#中不可能从本机。lib文件导出类。但是使用c++ Cli,您可以包装类并通过wrapper .net类使用它。但是这种方法也需要包含一个头文件(.h或.hpp)。
COM dll则不同。它们可以在c#项目中引用,MSVS会自动包装本机类。
@marcelo-cantos的话:使用c++/CLI作为托管和非托管世界之间的桥梁。这很容易。
你唯一的选择是:
(1)编写一个包装器DLL,导出外部的"C"函数来调用你现有的c++对象。然后在c#中使用[DllImport]
和PInvoke
来调用DLL的C函数。
(2)将本地c++类包装在COM接口中,并使用c# COM互操作来调用类上的方法。
c++/CLI桥接是目前最简单的选择。
相关文章:
- 如何将模板的实例传递给另一个模板的另一个实例?
- 在类的第一个/最后一个实例存在之前/之后调用一对函数.有没有更好的方法?
- 是否可以为所有子类设置一个实例?
- 如何在C++中将类的实例完全重新分配给同一类的另一个实例(然后删除原始对象)?
- 如何一次创建帧的一个实例
- 无法从派生类型的作用域访问另一个实例的受保护成员
- QT Windows GUI-无需qtSingLeaplication即可如何打开一个实例
- 包含另一个实例的特征实例,该实例持有固定大小的特征对象
- 从模板类的另一个实例创建模板类的实例时省略模板参数
- 为什么将FMTFLAG指定两次 - 作为枚举的一部分,而另一个实例为静态const变量
- 对成员变量的引用在向同一向量中添加另一个实例后断开
- std :: unordered_set :: find-仅构造一个实例()
- 是否可以在 std::optional 中放置一个实例,而不检查/破坏前一个实例?
- 从字符串中删除字符的第一个和最后一个实例
- Object 创建另一个实例,而不是修改指向的实例
- 在#define宏中创建一个实例
- C++-为任何lambda创建一个实例化桶
- qnetworkAccessManager一个实例并连接插槽
- C 是否有办法仅返回for循环的最后一个实例
- 为什么我的程序有一个实例,其中"Vector Subscript out of Range"?