【发布时间】:2014-09-30 12:06:52
【问题描述】:
我的非托管 DLL 中有一个入口点,这是来自其 C 代码的代码
void *__cdecl entryp(int a1, int a2, __int64 a3, signed int a4, int a5)
{
void *v6;
/..../
/..../
return v6;
}
我在我的 C# 项目中使用 dllimport
[DllImport("unmanaged.dll", EntryPoint = "entryp",CallingConvention = CallingConvention.Cdecl)]
public static extern unsafe long* entryp(byte[] bData, uint length, ushort width, ushort heigth, uint nMaxCode, short anaLevel);
但问题是该方法不返回任何内容 我的代码出了什么问题?感谢您阅读我的问题
【问题讨论】:
-
问题是“v6 指向什么?”返回局部变量的地址是未定义的行为。
-
这些方法有完全不同的参数。这是问题中的错字吗?
-
有什么区别? @dbc
-
@masbro - 一个是
int a1, int a2, __int64 a3, signed int a4, int a5,另一个是byte[] bData, uint length, ushort width, ushort heigth, uint nMaxCode, short anaLevel -
不是因为这两种方法是用不同的语言编写的,所以需要对其参数进行转换
标签: c# c++ pointers dll unmanaged