VC6中dll的创建和使用

[size=medium]一直很好奇C++的Dll是个什么东西...
最近终于知道了..

1.创建project
选择Win32 Dynamic Link Library,然后 OK, 然后 选择带一个例子的那个 project
2.写一个简单的方法
在project中可以看到已经创建好的4个文件.
dlltest.cpp StdAfx.cpp dlltest.h StdAfx.h
先在dlltest.h 中生命自己要写的方法
Java代码
#ifdef DLLTEST_EXPORTS
#define DLLTEST_API __declspec(dllexport)
#else
#define DLLTEST_API __declspec(dllimport)
#endif



DLLTEST_API int add(int a,int b);

#ifdef DLLTEST_EXPORTS
#define DLLTEST_API __declspec(dllexport)
#else
#define DLLTEST_API __declspec(dllimport)
#endif


DLLTEST_API int add(int a,int b);


然后去dlltest.cpp 中实现之
Java代码
#include "stdafx.h"
#include "dlltest.h"

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}



DLLTEST_API int add(int a,int b)
{
return a+b;
}

#include "stdafx.h"
#include "dlltest.h"

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


DLLTEST_API int add(int a,int b)
{
return a+b;
}

这样dll就算是写完了,build 一下.
3.使用Dll
去dlltest的文件目录下的debug中,把dlltest.dll 和 dlltest.lib 复制到目标程序中,然后把 dlltest.h 也复制到目标程序中.

在目标程序 testdll.cpp 中
Java代码

#include "dlltest.h"
#include <stdio.h>

int main(){
int c=add(3,5);
printf("%d\n",c);

return 0;
}


#include "dlltest.h"
#include <stdio.h>

int main(){
int c=add(3,5);
printf("%d\n",c);

return 0;
}


这样build.没有错误..但是运行会提示错误..
在该project的 settings 中 的 link 标签页 中间 那行 Object/Library modules: 中添加dlltest.lib 。
然后build.然后运行..

现在已经可以成功使用dll了.

ps:微软的东西真是麻烦... [/size]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值