今天用C#调用C++写的一个DLL
死活不成功
而我在c++里面测试一点问题没有。
搞了一天终于debug出来了,
在C#里面传给DLL函数一个文件路径找不到,
后来经过断点调试发现 最后一个参数 DBFilename 在DLL里面找不到文件
[DllImport(_DLLFileName, EntryPoint = "?getFeatureByUid@CmobileDetect@@QAEHHPAEPB_W@Z", CallingConvention = CallingConvention.ThisCall)]
private static extern int __getFeatureByUid(__FDSdll* p, int uid, byte[] feature, string DBFileName);
无奈N久,搜百度,找Google 也没到原因所在,无奈MSDN看参数列表说明。
一个个测试,最终发现添加一个“ CharSet = CharSet.Unicode” 大功告成
[DllImport(_DLLFileName,
EntryPoint = "?getFeatureByUid@CmobileDetect@@QAEHHPAEPB_W@Z",
CallingConvention = CallingConvention.ThisCall,
CharSet = CharSet.Unicode)]
本文记录了作者使用C#调用C++编写的DLL时遇到的问题及解决方案。主要问题是C#传给DLL的文件路径无法被正确识别。通过添加CharSet.Unicode属性解决了文件路径传递的问题。
5662

被折叠的 条评论
为什么被折叠?



