在 Qt 下调用 vs2008 生成的 dll 以及 lib
在开发的时候,我们经常要遇到两种开发环境相互结合的情况,在这
个时候,一般有两种方法解决这个问题
第一种方法是:讲一种语言改为另一种语言
这种方法一般需要的工作量都是比较大的,所以当时间紧迫的时候大
多数的人都会感觉很麻烦,毕竟是费力还费事费时,所以这个时候就
要另辟捷径那么就要用第二种方法了。
第二种方法:调用一个程序生成的 dll 以及 lib 文件
用这种方法省时,只是对于一些新手来说可能不知道要怎么操作,下
面我就结合 Qt 以及 vs2008 来简单讲述一下具体的怎么用,首先在
vs2008 的环境下新建一个工程,在选择应用程序设置的时候选择 DLL,
并且选择空项目,如下图所示:
在 vs 里面建立 mydll.h 文件以及 mydll.cpp 文件,两个文件的内容分
别如下所示:
mydll.h
extern "C" _declspec(dllexport) int myMin(int a,int b);
mydll.cpp
#include"mydll.h"
#include
int myMin(int a,int b)
{
}
printf("Min is called");
if(a>=b)return b;
else return a;
其中 extern "C" _declspec(dllexport) int myMin(int a,int b);
这句话的作用是将函数 myMin(int a,int b)声明成一个导出函数,说明
这个函数要被其他的程序调用,即作为 dll 的一个对外函数接口
将此函数编译过后,就会在目录下产生 mydlltest.dll,mydlltest.lib 两个
文件,其中 mydlltest 是自己所定义工程的名字。
下面详细介绍两种环境下调用 dll 以及 lib 的方法,一种是同样在
vs2008 环境下,另外一种就是在 Qt 下面调用
1)、在 vs2008 环境下调用
新建一个工程添加.cpp 文件,在文件里面进行如下的代码:
#pragma comment(lib,"mydlltest.lib")
extern "C" _declspec(dllimport) int myMin(int a,int b);
#include
int main()
{
}
int a;
a=myMin(8,10);
printf("\n");
printf("%d\n",a);
return 0;
其中要注意:要把 mydlltest.lib 文件和所写的.cpp 文件放在一个文件
夹,将 mydlltest.dll 文件放在 Debug 的文件夹下面,运行一下就可以
看到结果如下图所示:
在此实现了在同样的环境下调用 dll 以及 lib 文件。
需要注意的是:注意 lib 还有 dll 在所调用文件夹所放的位置。
2)、在 Qt 环境下调用
在 Qt 工程下新建 Qt gui 应用,命名项目工程 myMintest,目标设置为
桌面,类的信息为 MainWindow,生成文件之后,右击 myMintest 之
后,选择添加库,选择添加外部库,将目录底下的 lib 文件添加进去,
这一部是至关重要的。
直接在 ui 下面拉进去空间 label,然后在 mainwin.cpp 下面初始化的
部分添加如下的代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
extern "C" __declspec(dllimport) int myMin(int a,int b);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
label=new QLabel(this);
int a;
for(int i=0;i<10;i++)
{
a=myMin(i,10);
ui->label1->setText(QString::number(i));
qDebug()<因为我想测试一下是不是可以时时的调用函数,所以增加了循环以及
qDebug()<