关于封装成DLL
我有一个项目,在此项目中A(exe)模块调用了B(DLL, C++编写,静态加载的方式)和C(DLL, delphi编写,LoadLibraryEx方式加载)。后来因为项目需求改变,需要把A封装成DLL供C#调用,封装完后,发现C#通过A调用B时可以成功的,可是当调用C的时候,就会直接崩溃,报错:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
打断点发现崩溃的地方就是A中调用C函数的时候,希望能得到你的帮助,谢谢。
[解决办法]
A(exe)时调用C(dll)是否有问题?
[解决办法]
1. c# dllimport 声明中指定的 调用约定不对
2. 传递的参数大小原型不对.
一般是前者, c/c 默认 c 调用约定, c# 默认 stdcall
如果不是, 你把函数原型列出来看看.
[解决办法]