使用vs2008制作dll文件,生成动态链接库
2012-04-18 09:52
429 查看
1.制作dll文件
vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:MyDll。点击【OK】,【Next】,选择dll单选按钮,完成。
vs2008会自动生成一些代码,不用管它。创建MyDll.h,代码如下
MyDll.h 为了提高可用性,写了可回带值的函数供参考
Cpp代码 收藏代码
//MyDLL.h
extern "C" _declspec(dllexport) int Max(int a, int b);
extern "C" _declspec(dllexport) int Min(int a, int b);
extern "C" _declspec(dllexport) bool cim2scada(char* cimId, char scadaId);
创建MyDll.cpp
Cpp代码 收藏代码
// MyDll.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include"MyDll.h"
#include <iostream>
int Max(int a, int b)
{
if(a>=b)return a;
else
return b;
}
int Min(int a, int b)
{
if(a>=b)return b;
else
return a;
}
bool cim2scada(char* cimId, char* scadaId){
char result;
if(cimId == NULL){
printf("空指针!");
return false;
}else if(strlen(cimId) == 0){
printf("cimId无值!");
return false;
}
if(strcmp(cimId, "aaaaaa") == 0){
result = "1000";
}else if(strcmp(cimId, "bbbbbb") == 0){
result = "2000";
}
scadaId = result;
printf("fun scadaId:%s\n", scadaId);
return true;
}
编译一下,到工程的DEBUG目录,就可以找到MyDll.dll文件
2.创建测试程序
vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:DllTest。点击【OK】,【Next】,选择console单选按钮,去掉“预编译头”默认勾选项,完成。
Cpp代码 收藏代码
#include "windows.h"
#include <iostream>
void main(){
typedef int(pMax)(int a, int b);
typedef int(pMin)(int a, int b);
typedef bool(pcim2scada)(char cimid, char scada);
HINSTANCE HDLL;
HDLL=LoadLibrary(L"MyDll.dll");//加载动态链接库MyDll.dll文件;
pMax Max=(pMax)GetProcAddress(HDLL,"Max");
pMin Min=(pMin)GetProcAddress(HDLL,"Min");
pcim2scada cim2scada=(pcim2scada)GetProcAddress(HDLL,"cim2scada");
int a = Max(5, 12);
char cimId[] = "aaaaaa";
char * scadaId = "";
bool b = cim2scada(cimId, &scadaId);
printf("Max结果为%d",a);
printf("cimId:%s, scadaId:%s", cimId, scadaId);
FreeLibrary(HDLL);//卸载MyDll.dll文件;
}
编译一下
拷贝MyDll.dll文件到DllTest项目的Debug目录下
打开一个控制台(cmd),进入DllTest > Debug目录,运行DllTest.exe
输出结果:
Cpp代码 收藏代码
fun scadaId : 1000
Max结果为12
cimId:aaaaaa, scadaId:1000
=====================================================================================================
这里总结一下vs2008下创建dll并使用dll导出函数的方法,当然方法还有很多,找出一个自己比较习惯的方法就好!
一:生成DLL
1:创建DLL工程
文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
MyDLL.cpp内容如下:
#include <iostream>
using namespace std;
#include "MyDLL.h"
int Add(int &a,int &b)
{
return a+b;
}
MyDLL.h内容如下:
#pragma once
#define DLL_EXPORT declspec(dllexport)
extern "C" DLL_EXPORT int Add(int &a,int &b);
点击生成,则dll文件就生成了,vs2008不能直接生成lib文件,这个时候就需要我们在建立dll工程的时候 再新建一个def文件,默认生成然后重新生成就能够得到lib文件了
2:调用DLL文件导出的接口函数
vs2008这个IDE非常好用,我们这里玩一下,在上面创建的DLL工程中,再新建一个项目来直接调用DLL导出函数。
右键解决方案->添加->新建项目->建立一个空的常规工程 testMyDLL,下面新建两个文件testMyDLL.cpp和testMyDLL.h
testMyDLL.cpp内容如下:
#include "testMyDLL.h"
#pragma comment(lib,"..\debug\MyDLL.lib")
#include <iostream>
using namespace std;
int main()
{
int a =3;
int b =2;
cout<<Add(a,b)<<endl;
getchar();
}
testMyDLL.h内容如下:
#pragma once
#define DLL_EXPORT declspec(dllexport)
extern "C" DLL_EXPORT int Add(int &a,int &b);
这里需要注意testMyDLL.cpp文件中调用lib的这句话:
#pragma comment(lib,"..\debug\MyDLL.lib")
这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
注:dll文件的操作有很多方法,待以后丰富。。。
vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:MyDll。点击【OK】,【Next】,选择dll单选按钮,完成。
vs2008会自动生成一些代码,不用管它。创建MyDll.h,代码如下
MyDll.h 为了提高可用性,写了可回带值的函数供参考
Cpp代码 收藏代码
//MyDLL.h
extern "C" _declspec(dllexport) int Max(int a, int b);
extern "C" _declspec(dllexport) int Min(int a, int b);
extern "C" _declspec(dllexport) bool cim2scada(char* cimId, char scadaId);
创建MyDll.cpp
Cpp代码 收藏代码
// MyDll.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include"MyDll.h"
#include <iostream>
int Max(int a, int b)
{
if(a>=b)return a;
else
return b;
}
int Min(int a, int b)
{
if(a>=b)return b;
else
return a;
}
bool cim2scada(char* cimId, char* scadaId){
char result;
if(cimId == NULL){
printf("空指针!");
return false;
}else if(strlen(cimId) == 0){
printf("cimId无值!");
return false;
}
if(strcmp(cimId, "aaaaaa") == 0){
result = "1000";
}else if(strcmp(cimId, "bbbbbb") == 0){
result = "2000";
}
scadaId = result;
printf("fun scadaId:%s\n", scadaId);
return true;
}
编译一下,到工程的DEBUG目录,就可以找到MyDll.dll文件
2.创建测试程序
vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:DllTest。点击【OK】,【Next】,选择console单选按钮,去掉“预编译头”默认勾选项,完成。
Cpp代码 收藏代码
#include "windows.h"
#include <iostream>
void main(){
typedef int(pMax)(int a, int b);
typedef int(pMin)(int a, int b);
typedef bool(pcim2scada)(char cimid, char scada);
HINSTANCE HDLL;
HDLL=LoadLibrary(L"MyDll.dll");//加载动态链接库MyDll.dll文件;
pMax Max=(pMax)GetProcAddress(HDLL,"Max");
pMin Min=(pMin)GetProcAddress(HDLL,"Min");
pcim2scada cim2scada=(pcim2scada)GetProcAddress(HDLL,"cim2scada");
int a = Max(5, 12);
char cimId[] = "aaaaaa";
char * scadaId = "";
bool b = cim2scada(cimId, &scadaId);
printf("Max结果为%d",a);
printf("cimId:%s, scadaId:%s", cimId, scadaId);
FreeLibrary(HDLL);//卸载MyDll.dll文件;
}
编译一下
拷贝MyDll.dll文件到DllTest项目的Debug目录下
打开一个控制台(cmd),进入DllTest > Debug目录,运行DllTest.exe
输出结果:
Cpp代码 收藏代码
fun scadaId : 1000
Max结果为12
cimId:aaaaaa, scadaId:1000
=====================================================================================================
这里总结一下vs2008下创建dll并使用dll导出函数的方法,当然方法还有很多,找出一个自己比较习惯的方法就好!
一:生成DLL
1:创建DLL工程
文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
MyDLL.cpp内容如下:
#include <iostream>
using namespace std;
#include "MyDLL.h"
int Add(int &a,int &b)
{
return a+b;
}
MyDLL.h内容如下:
#pragma once
#define DLL_EXPORT declspec(dllexport)
extern "C" DLL_EXPORT int Add(int &a,int &b);
点击生成,则dll文件就生成了,vs2008不能直接生成lib文件,这个时候就需要我们在建立dll工程的时候 再新建一个def文件,默认生成然后重新生成就能够得到lib文件了
2:调用DLL文件导出的接口函数
vs2008这个IDE非常好用,我们这里玩一下,在上面创建的DLL工程中,再新建一个项目来直接调用DLL导出函数。
右键解决方案->添加->新建项目->建立一个空的常规工程 testMyDLL,下面新建两个文件testMyDLL.cpp和testMyDLL.h
testMyDLL.cpp内容如下:
#include "testMyDLL.h"
#pragma comment(lib,"..\debug\MyDLL.lib")
#include <iostream>
using namespace std;
int main()
{
int a =3;
int b =2;
cout<<Add(a,b)<<endl;
getchar();
}
testMyDLL.h内容如下:
#pragma once
#define DLL_EXPORT declspec(dllexport)
extern "C" DLL_EXPORT int Add(int &a,int &b);
这里需要注意testMyDLL.cpp文件中调用lib的这句话:
#pragma comment(lib,"..\debug\MyDLL.lib")
这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
注:dll文件的操作有很多方法,待以后丰富。。。
相关文章推荐
- 使用vs2008制作dll文件,生成动态链接库
- 使用vs2008制作dll文件,生成动态链接库
- 使用vs2008制作dll文件,生成动态链接库
- 使用vs2008制作dll文件,生成动态链接库
- 使用vs2008制作dll文件,生成动态链接库
- Visual C#(VS2008)制作DLL文件并使用DLL文件
- 【Visual Studio】使用 pexports 根据 VS 的 .dll 动态链接库生成 .lib 库文件
- VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
- 使用VB将ASP代码封装生成DLL文件
- Visual C#(VS2008)制作DLL文件
- vs2008中如何更好的使用 .dll文件 / vs2008找不到 .dll问题
- VS2008生成DLL并使用
- DLL与LIB库文件的生成和使用---C++
- VS2008 dll 项目不能生成*.lib文件
- 转载:JNI 编写动态链接库 HelloNative 详细过程(也即用Java和C在Linux下动态生成并使用so文件过程)
- VS2008中利用CGAL库生成计算凸包的dll文件
- 包含别人的dll,然后我们用类库再次封装成dll的时候的注意事项;源文件与模块生成时的文件不同;创建调试信息文件 ··PDB时发生意外的错误,进程无法访问文件,因为另一个程序正在使用此文件
- DLL与LIB库文件的生成和使用
- 使用idsdt制作生成显卡代码的dsdt文件驱动显卡
- C#生成CHM文件(外篇使用hha.dll)