关于动态连接库的问题。

fajili 2002-03-26 09:24:42
我生成了一个dll(mydll.dll),内有一个函数void Test()。
我用如下方式调用Test()函数
typedef void (*Mypro)();
Mypro dll=NULL;
HINSTANCE hdll=LoadLibrary("mydll.dll");
if(hdll)
{
dll=(Mypro)GetProcAddress(hdll,"Test");
if(dll)
dll();
else
MessageBox("no test function");
}
else
{
MessageBox("no mydll.dll");
}
FreeLibrary(hdll);

但程序只执行MessageBox("no test function"),而不执行dll().请教高手。谢了!
...全文
31 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
partime 2002-03-27
  • 打赏
  • 举报
回复
加一个mydll.def文件吧
格式大致如下:

LIBRARY MYDLL
EXPORTS
MyFunction1
MyFunction2
david4no 2002-03-27
  • 打赏
  • 举报
回复
你的工程力应该有一个.def文件,在你这个工程里应该是mydll.def文件吧
在EXPORTS下面加入下面的语句。
Test @1
不加后面的@1也可以,这是给那些使用序号调用动态库中的函数的语言用得,如BASIC
charles_y 2002-03-26
  • 打赏
  • 举报
回复
看了看,觉得你的用法毫无问题,定义也是对的,多试几次
lanzhengpeng2 2002-03-26
  • 打赏
  • 举报
回复
.def
tigerfox 2002-03-26
  • 打赏
  • 举报
回复
DLL没有被加载。
用EXESCAPE看看没有这个函数。
类型对不对?
fajili 2002-03-26
  • 打赏
  • 举报
回复
Test函数的定义如下
extern "C" __declspec(dllexport) void Test();
请问这样可以吗?
hdj0569 2002-03-26
  • 打赏
  • 举报
回复
例如:
void __stdcall Test()
{}
hdj0569 2002-03-26
  • 打赏
  • 举报
回复
例如:
void __stdcall Test()
{}
mousubin 2002-03-26
  • 打赏
  • 举报
回复
Test函数是否是EXTERN C导出的?
fajili 2002-03-26
  • 打赏
  • 举报
回复
请问如何遵守C调用,DLL端如何写,调用端如何写?
yongdu 2002-03-26
  • 打赏
  • 举报
回复
没遵守C调用?
fajili 2002-03-26
  • 打赏
  • 举报
回复
首先我保证dll内一定有test函数,其次typedef 中加winapi并不能解决问题。
从上面的程序可看出,程序已加载了dll,但不能找到test函数,问题是dll内有这个函数啊????????
killhs 2002-03-26
  • 打赏
  • 举报
回复
你是用VC写的吗?
是否输出遵守了C标准输出格式!
truestone 2002-03-26
  • 打赏
  • 举报
回复
typedef void (*Mypro)(); 是不是少WINAPI?
yongdu 2002-03-26
  • 打赏
  • 举报
回复
dll输出函数没有

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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