- 主题:动态库这么导出函数的活久见
你是用LoadLibrary显式load的?他预期可能是用lib link后通过导入表隐式load。这样对函数名的修饰是一致的,不一致的话在link阶段就会报错。
但是调用者是__declspec(dllimport),被调用者才是__declspec(dllexport)
--
修改:z16166 FROM 123.119.160.*
FROM 123.119.160.*
dll导出的变量、函数名字没啥"规范",只要调用者、被调用者约定一致就行。
只不过大部分情况下导出的函数名是去掉了c++ name mangling的。
但是不去掉name mangling也是允许的,甚至可以导出一个复杂的c++类(这种涉及到内存布局,就无法跨语言了)
【 在 vmx 的大作中提到: 】
: 就给了这么一个header,lib没注意,反正开发是PB和Delphi或者C#,都用不到lib
: 反正移民局给的demo是C#的,我倒是没注意.net里的DllImport为啥能把那些前缀的下划线和后缀的参数长度给抹掉了,主要是从没见过公用Dll导出函数不是WINAPI规范的。
--
FROM 123.119.160.*
stdcall有规定,后面要加"@4"这种后缀
楼主那头文件里没stdcall字样,应该在工程里设置了函数调用默认都是stdcall
【 在 iamwing 的大作中提到: 】
: 没懂,前面不是有extern "C"了么,为啥名称还会变呢?求教
--
FROM 222.128.162.*