C# 调用C++ DLL编码问题
今天用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)] ?