如何从 C# 调用C++本机属性
How to Call C++ Native Properity from C#
我不太擅长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
}
相关文章:
- 从C++本机插件更新Vector3数组
- GCC本机矩阵运算库
- VC++本机单元测试,找不到调试符号
- 在这种情况下,java对象是否可以调用本机函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 无法将标准库导入本机 android 项目中的头文件
- 使用本机 C++ 应用程序中的 C# 代码
- 在nodejs中使用本机代码的最佳方法是什么?
- 如何告诉本机节点模块所需的dll存储在哪里?
- 在自定义程序中使用本机 Windows 自然顺序排序
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- MS 本机单元测试 - 断言::线程失败不起作用
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- Winapi - SetWindowLongPtr in ShutdownBlockReason创建/销毁JNI本机代码
- C++/CLI 混合托管/本机 DLL 不起作用
- 子系统中的异常处理:本机
- 多次调用本机方法时出现致命错误
- 如何使用 Malloc 调试来检查本机内存泄漏?
- 使用本机 JNI 静态方法实现C++ Java 运行时错误