C# 和 C++ 互操作

Posted

技术标签:

【中文标题】C# 和 C++ 互操作【英文标题】:C# and C++ interop 【发布时间】:2015-06-07 00:50:23 【问题描述】:

我有一个定义为

的 C++ 函数
#define DllExport   __declspec( dllexport ) 
extern "C" DllExport void _stdcall CppAmp::square_array(float* arr, int n)

和c#代码

[DllImport("C++AmpProject.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
        extern unsafe static void square_array(float* array, int length);

但是我得到了一个例外System.EntryPointNotFoundException

我在这里做错了什么?

【问题讨论】:

函数以修饰名导出。 【参考方案1】:

我认为您应该在使用前通过Dependency Walker 进行检查。您的函数名称可能不像square_array

【讨论】:

【参考方案2】:

事实证明参数名称必须完全匹配。

【讨论】:

不,不是这样

以上是关于C# 和 C++ 互操作的主要内容,如果未能解决你的问题,请参考以下文章

通过互操作将字符串数组从 C# 传递到 C++

C# ArrayList 与 C++ 互操作

使用 COM 互操作从非托管 C++ 访问 c# 属性

c++ 结构指针转换为数组互操作 c#

与 C# 控制台应用程序互操作 C++ (DLL) 的问题

本机 C++ 程序在使用 C++/CLI 和 C# 互操作 DLL 启动时崩溃