• 6705阅读
  • 5回复

[提问]QT 导出DLL,函数名称被改变,怎么解决? [复制链接]

上一主题 下一主题
离线dafei2015
 

只看楼主 倒序阅读 楼主  发表于: 2018-08-23
开发环境就是QT5.8+MinGW 32bit     .
.h代码
#ifndef DLL_TEST_H#define DLL_TEST_H#define DLL_CAL_BACK _stdcall#include <QtCore/qglobal.h>#if defined(DLL_TEST_LIBRARY)#  define DLL_TESTSHARED_EXPORT  Q_DECL_EXPORT#else#  define DLL_TESTSHARED_EXPORT   Q_DECL_IMPORT#endifclass DLL_TESTSHARED_EXPORT Dll_test{public:    Dll_test();    int add(int a,int b);};#endif // DLL_TEST_H

.cpp代码
#include "dll_test.h"
Dll_test::Dll_test(){}
Dll_test::add(int a, int b){     return a+b;}函数名称是add,调用DLL时函数名称变成_ZN8Dll_test3addEii,怎么让函数名称不改变?哪位有经验人士指点下?谢谢!


离线dbzhang800

只看该作者 1楼 发表于: 2018-08-23
和Qt无关

这是C++的名字改编,自行搜索 extern c

离线小韩老师

只看该作者 2楼 发表于: 2018-08-27
这个改不了,你说的这个怪异的名称是编译器编译之后生成的实际名称,是给机器用的。你写的代码是所谓的源文件或者头文件是人看你,你们两个不在一个频道,你只要保证人看的没有错误就可以了,经过翻译给机器的也就没有问题!
离线dafei2015

只看该作者 3楼 发表于: 2018-09-03
回 dbzhang800 的帖子
dbzhang800:和Qt无关
这是C++的名字改编,自行搜索 extern c
 (2018-08-23 10:32) 

谢谢 ,解决了
离线dafei2015

只看该作者 4楼 发表于: 2018-09-03
回 小韩老师 的帖子
小韩老师:这个改不了,你说的这个怪异的名称是编译器编译之后生成的实际名称,是给机器用的。你写的代码是所谓的源文件或者头文件是人看你,你们两个不在一个频道,你只要保证人看的没有错误就可以了,经过翻译给机器的也就没有问题! (2018-08-27 08:38) 

谢谢
离线dosmlp

只看该作者 5楼 发表于: 2018-09-17
这是c和c++编译器导出函数的区别,和Qt无关啊
快速回复
限100 字节
 
上一个 下一个