今天用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)]