函数定义,C到.NET
本文关键字:NET 定义 函数 | 更新日期: 2023-09-27 18:00:08
我有一些C代码,我已经将其转换为DLL。我需要从C#程序调用DLL。我收到错误"试图读取或写入受保护的内存。这通常表明其他内存已损坏。"
所以,我认为我没有正确转换我的函数原型,这导致了内存泄漏。
C中的功能原型是
int __stdcall karacell_bridge( int argumentCount, char **argContent)
这是对C#DLL调用中函数原型的正确转换吗?
[DllImport("KaracellLib.dll", EntryPoint = "karacell_bridge@8", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, ExactSpelling = true)]
public static extern int karacell_bridge(int argumentCount, [In, Out]string[] argContent);
否。你需要整理第二个论点。我不确定是否有一种安全的PInvoke方法来封送可修改的字符串数组;这里似乎有很多故障模式。也许您可以尝试将字符串数组转换为char *
数组。