如何从 C# 调用C++本机属性

How to Call C++ Native Properity from C#

本文关键字:C++ 本机 属性 调用      更新时间:2023-10-16

我不太擅长C++但。。例如我有这个

#define GETSomthing_API  __declspec(dllexport)
extern GETSomthing_API int nGetSomthing;

我想像这样导入的方法

GETSomthing_API  int GetSomthing(const char* szConfigPath, char *A, int B)

如何从 C# 调用它?

旁边我认为我的问题出在C++边的参数类型(const char*),C#中的相等类型是什么!常量字符*

谢谢

如何从 C# 调用C++代码

从 C# 调用C++函数

使用: [DllImport("xxx.dll")] xxx.dll 由 C++ 编译

希望这有帮助。

几种方法可以从 C# 调用本机代码。最简单的可能是使用 P/Invoke .假设你的函数是这样的:

extern "C" int nGetSomeThing(void);

并将其编译成 YourDllName.dll 文件,可以使用 P/Invoke 从 C# 代码中按以下方式直接调用非托管代码:

public static class interop
{
    [DllImport("YourDllName.dll")]
    static extern public int nGetSomeThing(void);
}
...
interop.nGetSomething() // call to the native function

请参阅:http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx。

如果你有很多具有复杂签名的函数,你可能应该在 C++/CLI 中使用互操作层。参考 : http://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-10-minutes

我刚刚添加了__cplusplus检查,它起作用了!

#ifdef __cplusplus

外部"C" {

恩迪夫

GETSomthing_API char* GetAgentId(const char* szConfigPath, char *szA, int ASize);

IFDEF __cplusplus

}