从C++DLL访问C#静态类
Access C# static class from a C++ DLL
我的任务是为一个我没有源代码的遗留C++DLL编写一个新接口,由于我之外的原因,该DLL直接访问遗留应用程序中的全局类。
从应用程序来看,它类似于:
extern Interface *App;
...
Interface App*; // A pointer to our interface class.
然后,从遗留DLL:
if( App->GetStatus() ) return false;
App引用的Interface类在C#中重写起来很简单,但我如何使其等效于extern
,以便遗留的C++DLL可以访问它?
谢谢!
您可以尝试使用Robert Giesecke的"UnmanagedExports"nuget包来实现以下功能:
class Test
{
[DllExport("add", CallingConvention = CallingConvention.Cdecl)]
public static int TestExport(int left, int right)
{
return left + right;
}
}
但是:
a) 我相信这只适用于方法,而不是类和
b) 在C#中没有导出DLL的本机方法的原因是,调用应用程序必须加载.NET框架才能访问该入口点。这也适用于我上面链接到的UnmanagedExports nuget包。
你可以通过让你的C++应用程序在调用C#应用程序之前加载mono来解决这个问题,但在你的情况下,这听起来不可能。
(此外,只有在项目属性中明确设置了构建目标(例如x86)时,UnmanagedExports才会起作用)
相关文章:
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何从静态向量访问类元素?
- 是否通过单元化指针UB访问静态类成员
- 从静态成员函数访问私有非静态类变量 - C++
- 说明通过指针访问非静态类成员函数
- 如何从 C++ 中的单独类访问静态映射?
- 如何从C 的朋友类访问私有静态方法
- 静态模板函数访问静态类成员
- 长镜头 -- 可能有一个静态类成员,该类成员具有访问非静态成员的 lambda
- 从C++DLL访问C#静态类
- 从另一个类访问静态成员函数
- "undefined reference"从静态方法访问的模板类的静态成员
- 类静态方法访问其静态数据成员
- 从另一个类访问类的变量而不使第一类为静态
- 通过C++中的子类访问超类的受保护静态成员
- 从成员类访问非静态属性
- 我需要通过基类静态变量访问派生类成员
- 如何访问从模板类继承的私有静态类成员
- c++访问静态类的成员变量,不是友
- 对类成员的静态函数访问