C#调用C++生成的DLL 找不到入口点 以及 尝试读取或写入受保护的内存
找不到入口点
https://blog.csdn.net/wangzhichunnihao/article/details/112570828
在文件C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64中
cmd打开黑窗口
dumpbin -exports DLL的路径
我的函数原来是PathDB 结构转成Dll后变成了这样
?PathDB@@YAHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@00@Z
https://blog.csdn.net/caowei880123/article/details/51088734/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242
尝试读取或写入受保护的内存
一开始DLL的接口是 std::string类型的,C++没有string类型的参数,所以特地查了一下C++与C#的参数类型对应关系http://t.zoukankan.com/innershare-p-10594775.html
看到C#的string对应的是C++的char*类型
于是把三个参数改成char* 后面强转成string类型就ok了
附上更改前和更改后的图片