关于加载DLL的问题?(dll的概念性问题,说不定你也碰到过这个情况)

vitti 2003-08-21 02:45:15
我做了一个简单的dll和两个dll测试程序(注意:我是先写dll然后再通过
project->add new project->new加入两个新的工程
DllTest1和DllTest2一个用静态加载方法加载该dll,一个动态加载该dll,结果

编译时编译器提示内存不能为读,我估计时两个应用程序不能同时调用这个dll。

我的问题不知到达明白了没有,总的来说。两个应用程序是不是能够同时加载一个dll…
...全文
45 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AaronChan 2003-08-21
  • 打赏
  • 举报
回复
同意楼上!!
功名半纸 2003-08-21
  • 打赏
  • 举报
回复
动态加载是加载到本进程地址空间的!!不会存在这个问题!!!!

你的导出函数是
extern "C" rettype __stdcall (argument);
并使用了DEF文件吗!!!
如果是的话!跟踪一下是加载DLL正确!!!
如果不是,建议改为此种形式!!
extern "C" int __stdcall Max(int A, int B);
DEF文件;

LIBRARY "HlpDll"

EXPORTS
Max
Min
cuterain 2003-08-21
  • 打赏
  • 举报
回复
我找到问题的原因了,不知道能不能给自己给分,犒劳一下!
:)
Cline 2003-08-21
  • 打赏
  • 举报
回复
编译时编译器提示内存不能为读,我估计时两个应用程序不能同时调用这个dll。


It is "编译器".
cuterain 2003-08-21
  • 打赏
  • 举报
回复
#include"Dlltest.h"
#include<iostream.h>
void main()
{
int a;
a=Min(8,10);
cout<<"比较的结果"<<a<<"\n";
//printf("比较的结果为%d ",a);
}
//这是DllTest1的源代码,单独运行DllTest1没有任何问题
//我已经试过了
cuterain 2003-08-21
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream.h>

int main(int argc, char* argv[])
{
//typedef类型定义关键字定一个指向
//dll中的函数原型的函数指针
typedef int (*pMax)(int a,int b);
typedef int (*pMin)(int a,int b);
//定义dll的句柄
HINSTANCE hDll;
//定义Max的实例
pMax Max;
//加载要连接的Dll
hDll=LoadLibrary("MyDll.dll");
Max=(pMax)GetProcAddress(hDll,"Max");
int a=Max(5,8);
cout<<"比较结果"<<a<<endl;
FreeLibrary(hDll);
return 0;
}
大家看看这是DllTest2测试程序看看代码有没有问题?
DDHuang 2003-08-21
  • 打赏
  • 举报
回复
no,你看看user32,kernel32等等dll基本每个程序都有特别是kernel32

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧