Abstract
如何在VC9环境下创建和使用dll及lib文件,但不用MFC。
一、创建dll
参见文章[zz]lib和dll文件的区别和联系。用方法一,在VC9下测试通过。
创建一个Dynamic Library工程,方法是New Project -> Win32
Console Application -> 在Win32 Application
Wizard中选择DLL和Empty project ->
Finish。假设工程名为testdll。
将文章[zz]lib和dll文件的区别和联系中的h文件和cpp文件copy到工程中。假设两个文件分别是testdll.h和testdll.cpp。不过最好把
#define MYLIBAPI extern "C" _declspec (dllexport)
放在头文件中,因为头文件将会被重用。把这一句放在头文件中可以减小代码量。否则必须在调用程序(主程序)中也写上这一句。
二、使用dll
创建一个空的Win32 Console
Application。命名为calldll。将前面建立的testdll中的testdll.h添加到工程中。这里也可以在工程properties
-> C/C++ -> General ->
Additional Include Directories中添加testdll的目录,则下面简单地写成#include
"testdll.h"就可以了。新建calldll.cpp如下:
#include
#include "testdll工程目录\testdll\testdll.h"
int main()
{
int x=1,y=2;
printf("%d + %d = %d\n",x,y,Add(x,y));
getchar();
}
将前面生成的testdll.lib(注意是lib不是dll)添加到工程中。方法是 Project
-> calldll Properties -> Linker
-> Input -> Additional
Dependenies,添加$(TargetDir)\testdll.lib。同时将前面生成的testdll.lib和testdll.dll拷贝到calldll工程的Debug目录下。这样就可以编译成功了。
三、创建lib
创建Winew Static Library工程。头文件与cpp文件与创建dll类似,不过去掉_declspec
(dllimport),只保留extern "C"。个人怀疑去掉这个extern "C"也是可以的,就留给后人去试吧。
四、使用lib
创建一个空的Win32 Console
Application。命名为calllib。将前面建立的testdll中的testdll.h添加到工程中。这一步与使用dll相同。也可以直接将.h文件copy到calllib目录下。新建calllib.cpp如下:
#include
#include "dll.h"
//LIB testlib.lib
#pragma
comment(lib,"C:\\Users\\Arthur\\Documents\\practise_cpp\\libAndDll\\calllib\\Debug\\testlib.lib")
int main()
{
int x=1,y=2;
printf("%d + %d = %d\n",x,y,Add(x,y));
getchar();
}
将前面生成的testdll.lib拷贝到calllib工程的Debug目录下。不需要像引用dll一样添加Additional
Dependencies。
这样就可以编译成功了。当然,如果不想写#pragma这样一句话,也可以像引用dll一样添加Additional
Dependencies,在使用OpenCV的时候就是这样做的。
--------------------------------------------------------