我需要调用本地函数传递指针作为参数传递给本地函数的PInvoke
long (WINAPI*)(long,long*);
在长*它会给我的结果
我这样做
但此呼叫不起作用
Int32 Camera_Index= 0;
Int32 Result;
IntPtr Result_Pointer = IntPtr(Result);
long Binning = Get_Current_Binning(Camera_Index, Result_Pointer);
我有例外System.AccessViolationException 所以,功能不能写我的结果。
如何做到这一点?
谢谢。
更新
嘿,伙计们。 我不知道你是什么意思,但我确实问过,我问了什么。
-I正在使用C++ CLI。它是不是C#
-I需要的PInvoke。我无法从CLI项目调用DLL unmanaget
-i并通过这样找到了解决办法。你可以删除我的答案,给我一些不足之处,但它是有效的。这很糟糕?
[DllImport("mrfw.dll", EntryPoint = "[email protected]")]
static long Get_Current_Binning(Int32, IntPtr);
int main(array<System::String ^> ^args)
{
Int32 Camera_Index= 0;
Byte* Result= new Byte(4);
IntPtr Result_Pointer = IntPtr(Result);
long Binning = Get_Current_Binning(Camera_Index, Result_Pointer);
}
入口点的名字说,该函数有一个** **的说法,而不是两个。从@ 4后缀可见。你正在处理糟糕的文档,或者只是在这个函数的正确的函数指针类型上猜错了。你可以尝试省略第二个参数作为一个疯狂的猜测,它肯定不会是一个IntPtr。联系供应商寻求支持。 – 2014-12-09 12:00:22
@Hans Passant感谢你,我确实解决了这个问题,但接下来确实来了。还有一个问题给你:我如何学习阅读entery pont的名字? – Michail 2014-12-09 12:29:39
http://stackoverflow.com/a/15664100/17034 – 2014-12-09 12:34:06