• 8782阅读
  • 2回复

我用qt写好一个动态链接库,然后再用qt调用该库的过程中一些问题 [复制链接]

上一主题 下一主题
离线kate
 
只看楼主 倒序阅读 楼主  发表于: 2007-04-07
— 本帖被 XChinux 执行加亮操作(2008-07-20) —
使用qt写了一个简单的动态链接库,编译也成功,代码如下:

—————————savedll.cpp———————————
#include <iostream>
#include <QApplication>

using namespace std;

extern "C" __declspec(dllexport) int ShowMessageBox()
{
    char *str = "this is Dll";
    cout<<str;
    return 0;
}
——————————————————————————

.pro配置文件如下:
######################################################################
# Automatically generated by qmake (2.01a) ??? ?? 7 16:20:50 2007
######################################################################

TEMPLATE = lib
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
win32:CONFIG += console

# Input
SOURCES += savedll.cpp

++++++++++++++++++++++++++++++++++++++++

然后使用VC调用动态库能成功的在控制台输出this is Dll字样。

然后在Qt下面我的调用不能成功

————————loaddll.cpp--------------
#include <QApplication>
#include <QLibrary>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    typedef int (*myPrototype);
    myPrototype myFunction=(myPrototype)QLibrary::resolve("simple","ShowMessageBox");
    if (myFunction)
        myFunction();
    return app.exec();

}

——------------------------
这个配置文件是默认。

能成功编译,但不能在控制台输出正确的信息,一直驻留在进程,应该如何做?
离线zeki709

只看该作者 1楼 发表于: 2007-04-08
DLL在搜索路径里吗?
离线solotek
只看该作者 2楼 发表于: 2010-04-27
typedef int (*myPrototype);

这里缺一个括号吧。

好像还有对应的要写 extern "C" __declspec(dllimport) int ShowMessageBox()
快速回复
限100 字节
 
上一个 下一个