社区
C++ 语言
帖子详情
在VC6中怎么加载dll
ziqingyexue
2012-05-23 03:38:26
在VC6中怎么加载dll???
...全文
565
8
打赏
收藏
在VC6中怎么加载dll
在VC6中怎么加载dll???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ziqingyexue
2012-05-25
打赏
举报
回复
我要的是加载的操作流程 大虾门这样的回答对我没有用啊
赵4老师
2012-05-25
打赏
举报
回复
C:\MSVC20\SAMPLES\win32\simpldll\LOADTEST.C
VC++2.0 MSVC20 "Microsoft Visual C++ Version 2.0" "1994 Microsoft Corporation"
http://download.csdn.net/detail/zhao4zhong1/3253384
kyding
2012-05-25
打赏
举报
回复
我以前留得一些说明,给你看一下
//编译加载链接库一般有3种方法
//1.编译加载静态链接库
//2.以传统的.h文件的方式编译加载动态链接库
//3.以.def文件的方式编译加载动态链接库
//还想强调一下如何用perl编译和加载c++的dll库。
/*查看工具为v++下面的Depends程序
Depends主要要看有没提供出口函数,
depends如果用来查看exe文件的话,还可以看到该exe文件都
加载了哪些dll
*/
/*
静态加载方法缺点较多,不建议使用,这里只介绍动态加载的方法
*/
/*动态加载,以一个简单的add函数为例*/
//lib.h
#ifndef LIB_H
#define LIB_H
extern "C"/*导出函数为标准C接口*/ int/*函数返回值*/ __declspec(dllexport)/*导出dll*/ add(int ,int )/*函数名称和参数类型*/;
#endif
//lib.cpp
#include "lib.h"
int add(int x, int y) {
return x+y;
}
/*以上两个文件lib.h和lib.cpp就可以编译成一个dll文件了,编译完成后用depends看一下编译后的dll是不是有
add函数的输出接口,如果有应该就是编译成功了*/
//下面我们来看一下是如何加载上面编译出来的dll的
//lib_call.cpp
#include <windows.h>
#include <stdio.h>
typedef int (*lpAddFun) (int ,int );//定义与add函数返回值和参数类型一致的函数指针类型,lpAddFun
int main(int argc, char* argv[]) {
HINSTANCE hdll;//dll句柄
hDll = LoadLibrary("test.dll");//test.dll为上面编译出来的dll名称
lpAddFun addFun;//实例化一个函数指针
if(hDll!=NULL) {//加载dll成功
addFun = (lpAddFun)GetProcAddress(hDll,"add");//导出函数获取
}
if(addFun!=NULL) {//导出函数获取成功
int result = addFun(2,3);//使用导出函数
printf("%s",result);//输出结果
}
FreeLibrary(hDll);//释放动态链接库
return 0;
}
yuanpeirong
2012-05-25
打赏
举报
回复
去看一下VC++深入详解,不但说了怎么加载,还说了怎么自己编写dll
一叶之舟
2012-05-23
打赏
举报
回复
LoadLibrary加载动态库
GetProcessAddress获取动态库中的函数指针。
如
HANDLE h=LoadLibrary("mydll.dll");
if(h==0)
return;
fun=GetProcessAddress(h,"myfun");
cbzjzsb123
2012-05-23
打赏
举报
回复
隐式加载或显式加载
隐式加载就是包含头文件和pragma lib文件
显式加载就是LoadLibrary和GetProcessAddress
ouyh12345
2012-05-23
打赏
举报
回复
隐式加载或显式加载
隐式加载就是包含头文件和pragma lib文件
显式加载就是LoadLibrary和GetProcessAddress
majia2011
2012-05-23
打赏
举报
回复
vc加载dll?这是要做什么?
VC6
.0 生成mfc
dll
无法
加载
先用vs2013生成的
dll
,兼容性不好,于是尝试用
VC6
.0生成。将源代码拷贝,编译生成
dll
,dumpbin查看导出函数都正常,但用loadlibrary
加载
总是返回失败,开始怀疑代码问题,于是做了个最简单的sum函数,但仍不能
加载
;怀疑
VC6
.0问题,于是用其他机器上的,但导出的
dll
仍不行。 最后将debug改成release————————ok了! 郁闷+欢喜,并十分不解。1 在V
超强补丁技术_让EXE启动时自动
加载
你的
DLL
(含
VC6
写的
DLL
源码模版)
目前很多EXE都是没有源代码的,如果要让这个EXE
加载
你写的
DLL
,除了LPK这种只能在旧系统里面运行的技术,还有一种方法就是给EXE加一个代码段,让exe启动的时候
加载
你写的
DLL
。那些不如写个exe直接修改目标程序的汇编内存,岂不是更方便,何必搞这个呢。其实不然,本贴的技术可以大大提高程序的安全性和简约化,至少不用你自己写一个exe把
dll
去注入到目标程序。 本帖技术,在PC时代的时候,很流行。特别是病毒感染这块。 本帖技术 支持win10,win7, 包括64位的win7系,和老系统XP,这个是PE加
VC6
静态与动态
加载
Dll
[示例代码]
1、
DLL
源代码 My
Dll
.hview plaincopy to clipboardprint?////////////////////////////////////////////////////////////////////////// // My
Dll
.h // 声明函数 int _stdcall Add(int a,int b); int _stdcall S
【转】
VC6
.0程序在win7下运行出现“NMSQL.
dll
必需的文件不能
加载
”的提示
在
VC6
.0安装的Common/bin目录下将NMSQL.
dll
文件拷贝至C:\Windows\System32目录下即可。
VS2015项目
中
,MFC内存
中
调用
DLL
函数(
VC6
生成的示例
DLL
)
本例主要讲一下,用
VC6
如何生成
DLL
,用工具WinHex取得
DLL
全部内容,VC2015项目
加载
内存
中
的
DLL
函数,并调用函数的示例。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章