标题:【提问】qt 可以调用纯VC编译的DLL库吗
作者:18283848
日期:2006-02-28 22:12
内容:
我想用qt做游戏客户端, 但已经有一套通讯架构了,也就是客户端的通讯已经有一套用mfc类做的通讯dll, 我的QT客户端程序可以很方便的调用到原来已经做好的mfc的dll通讯库吗.
#1 [cocalele 03-01 01:40]
可以啊,LoadLibrary,不过这样丧失了平台无关性。看你的说法你们有用VC做的,已经不是平台无关的了。尽管用吧 :)
#2 [18283848 03-01 03:31]
LoadLibrary?楼上的是说QLibrary 这个类来装入dll实现的吗?
实际的环境是这样的,因为原来已经有做一套通讯的库在windows下,使用的都是winsock 类 ,互斥 类,线程类都是 mfc的,的如果要改成QSocket等那些类来换原来已经做好的,工作量就大了,实际上我们原来那套通讯库在linux 下也实现了客户端,函数名和windows是一样的。所以linux下的库我也可以做成动态库来给qt调用。所以原来那一套通讯的架构如果可以在qt客户端使用我就不打算改了. 我看qt3.3文档怎么说qt只能装入与平台无关的动态库?(不知道是不是翻译有问题),如果是只能装入平台无关的,那我原来的库有用mfc的那些类,肯定是相关平台的。
另外如果可以实现,调用的时候有没有什么要注意的呀,楼主有没有什么SAMPLE呀,刚刚接触QT还不是很熟悉,希望多多指教。
目前的状态就是我有一整套UNIX (服务器)---windows(linux) 客户端的通讯架构的东西,现在这套东西我想利用,前台游戏界面我想用qt来开发。 至于qt的跨平台我倒不需要考虑那么多,因为我要开发的客户端也主要在WINDOWS下使用。
#3 [18283848 03-01 05:24]
再问一下 LoadLibrary ?是指win32的LoadLibrary函数吗, 如果是qt里面怎么调用这个函数呢?
LoadLibrary 可以显示连接dll就不需要Lib导入文件了, QLibrary 类加载一个编译的dll,需要用到lib文件吗?
#4 [XChinux 03-01 06:25]
这个QLibrary对应的就是Windows下的LoadLibrary。
不过,看你的帖子里说的,你原来的用MFC做的通讯库是以哪种形式给出的?没有.lib么?可否以静态加载的方式使用这个DLL?不能这样使用的话再使用动态加载。但动态加载需要DLL必须以一定格式输出,比如extern "C", dllexport macro等。
即,你能够在普通的C++程序中使用WIN32 API函数LoadLibrary()来加载的话,那才能使用QLibrary来加载。
另外,疑惑的是,为什么用MFC来做服务器端的通讯库?既然是WINDOWS和UNIX上都用的,为什么要写两套代码来分别维护?
#5 [18283848 03-01 06:49]
我原来的库我没有真正独立出来做DLL,刚刚我才把原来的通讯代码独立出来编译成DLL了,编译出来后是带LIB 和DLL两个文件的,我就不明白,QT要加载我刚刚编译的DLL库是不是那个LIB文件没什么用呢?我使用了 extern "C" __declspec(dllexport) 修饰DLL文件里我要使用的函数,
你能够在普通的C++程序中使用WIN32 API函数LoadLibrary()来加载的话? 这么说qt程序里怎么使用WIN32 API函数LoadLibrary()函数呢?
我原来的服务器程序是基于UNIX的,客户端有LINUX的也有WINDOWS(VC开发)的,而且它的通讯架构已经是很稳定的了。现在我就是想用原来的那一套系统的通讯架构 现在新要开发游戏客户端用qt来做,所以就会有上述的疑问。
那现在qt可以使用我原来的基于MFC的通讯库吗?
我现在还是不清楚qt里怎么调用WIN32 API函数LoadLibrary()来加载dll?