• 5324阅读
  • 8回复

[提问]共享库的问题 [复制链接]

上一主题 下一主题
离线xiao5491
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-29
请教下大家,我想在qt中写一个共享库,应该怎样设置才能让它只导出我指定的函数?
离线dbzhang800

只看该作者 1楼 发表于: 2013-08-29
Qt是库,不是语言。所以这个主要看你用的什么编译器,以及你的编译器对此是否支持。

对MSVC来说,默认全部隐藏,使用 __declspec(dllexport) 来指定需要导出的东西

对GCC来说,手册应该对你有帮助 http://gcc.gnu.org/wiki/Visibility
离线xiao5491

只看该作者 2楼 发表于: 2013-08-29
回 1楼(dbzhang800) 的帖子
我试着在.pro里添加了 QMAKE_CXXFLAGS += -fvisibility=hidden 好像不起作用,是我的用法不对么?
离线彩阳

只看该作者 3楼 发表于: 2013-08-30
写.def文件。
上海Qt开发联盟,热忱地欢迎你的加入!
离线xiao5491

只看该作者 4楼 发表于: 2013-08-30
回 3楼(彩阳) 的帖子
我是在linux下开发的,能使用def文件吗?(以前没做过linux下的开发)
离线彩阳

只看该作者 5楼 发表于: 2013-09-01
Linux下可没有.def文件的说法,建立项目的时候选择C++库->共享库。一般生成.a和.so文件。
上海Qt开发联盟,热忱地欢迎你的加入!
离线labhome

只看该作者 6楼 发表于: 2013-09-01
同问,我做了一个类似插件的程序,一个共享界面库,导出自定义的控件;一个主程序; 一个插件,插件是用c++写的,但导出几个c类型的API供主程序调用; 主程序和插件共用界面库;现在问题是:如果插件和主程序中有同名的类,则程序报异常。如何能让插件库不要导出类呢?
另:此程序在 winxp 下运行正常。
离线labhome

只看该作者 7楼 发表于: 2013-09-01
插件库是用 QLibrary 动态加载的
离线labhome

只看该作者 8楼 发表于: 2013-09-01
搞清楚了,在类定义前加 Q_DECL_HIDDEN
快速回复
限100 字节
 
上一个 下一个