这是我在引用CDSDK.dll时遇到的错误:
A call to PInvoke function 'Canon_Camera_Control!RDC.CameraSDK.cdAPI::CDStartSDK' has unbalanced the stack.
This is likely because the managed PInvoke signature does not match the unmanaged target signature.
Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
erorr在一个名为CAMERA.cs的文件中,这是我通过电脑控制我的佳能相机项目的一部分。
我错过了这个dll文件,所以我从两个地方下载了两次。 第一次dll文件是300kb并且出错了但是程序没有停止我使用我的记录器来注销错误:
5/2/2013--11:02 PM ==> Error! CDStartSDK C000060
5/2/2013--11:02 PM ==> Error! CDEnumDeviceReset C0000F1
5/2/2013--11:02 PM ==> Error! CDFinishSDK C0000F1
然后我下载了第二个文件298kb,他现在给了我这个错误。
例外是在第929行的CAMERS.cs上:
err = (UInt32)cdAPI.CDStartSDK(ref Version, 0);
这是我的SkyDrive更新解决方案/项目的链接,包括两个主管:
每个CDSDK1和CDSDK2都有cdsdk.dll文件,一个是928kb左右,另外300kb左右。每个人都有不同的错误。
https://skydrive.live.com/redir?resid=EB1C71C44C3976D5!202&authkey=!AAe7QvxIzBMne1Q
要下载的项目名称是:Canon_Camera_Control
这是secon CDSDK.dll文件的完整异常消息:
检测到PInvokeStackImbalance 消息:对PInvoke函数'Canon_Camera_Control!RDC.CameraSDK.cdAPI :: CDStartSDK'的调用使堆栈失衡。这很可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。
我现在搜索得如此之深,并没有找到关于此错误的任何线索。
答案 0 :(得分:0)
您的p / invoke签名错误。尝试使用 P / Invoke Interop Assistant 实用程序(http://clrinterop.codeplex.com/releases/view/14120)自动生成正确的编组属性。