C# 调用C++ dll EntryPointNotFoundException错误
这个问题有点奇怪,先记录一下:
C#调用C++dll时,c++代码怎么暴露对外函数就简单提一下,头文件中声明对外扩展的函数,类文件中实现就行了(TBDCParams 和 TBDCResult 是我定义的对象,用于接收和返回结果)
头文件
extern "C" __declspec(dllexport) TBDCResult __stdcall TempBoxDynamicCalculation(TBDCParams * prams);
类文件
__declspec(dllexport) TBDCResult __stdcall TempBoxDynamicCalculation(TBDCParams* params){ }
结果C#调用时,函数名、dll名全部都对应上了:
[DllImport("TempBoxDynamicCalculation.dll", EntryPoint = "TempBoxDynamicCalculation")] extern static TBDCResult TempBoxDynamicCalculation(ref TBDCParams vector);
依然报错:
通过一些测试发现,同样的写法,有的可以调用,有的不行,百度了一下资料,最终找到了一点眉目,C++编译为dll之后,函数名会发生变化
可以通过eXeScope软件查看对外提供的函数名称:
将入口方法名称改为这个名称就可以了,到这里问题就解决了。
但我还是有个疑问,为什么有的方法用原本的名字可以,但是eXeScope软件查看时,函数名不是原本的名字,两个名字都可以正常调用,为啥呢。。。。。
相关推荐
二十不悔三十而立 2020-08-19
文山羊 2020-11-07
susmote 2020-11-07
拉斯厄尔高福 2020-11-04
xceman 2020-10-23
hellojunz 2020-10-23
caojhuangy 2020-10-12
xinyupan 2020-09-28
lousir 2020-09-27
一个逗逗 2020-09-22
Maryhuan 2020-09-20
rkhstar 2020-09-09
DreamSnow 2020-09-09
aehousmantao 2020-09-03
tkernel 2020-09-03
abfdada 2020-08-26
svap 2020-08-25
FlightForever 2020-08-17
joyjoy0 2020-08-13