怎样在exe中向dll的函数传递参数?

danshuihepan 2004-03-29 11:53:21
如dll中有一函数
void __decelspec(dllExport) GetParams(int myParam)
{
GlobalParam = myParam;

}
在vc中这样调用:
typedef void (*func)(int);
func myfunc = (func)GetProcAddress(ThedllInstance,"GetParams");
myfunc(5);
可出现如此错误:
unHandled Exception in MyExe.exe,:ox0000cs
到底在dll中写这个函数时我该注意什么,在调用的时候是不是错误了?
期待关注我的问题,谢谢!
...全文
71 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
danshuihepan 2004-03-30
  • 打赏
  • 举报
回复
没有继续人回答,看来大家都睡了,我也睡觉,期待明天有好结果!
danshuihepan 2004-03-30
  • 打赏
  • 举报
回复
LoadLibrary了呀,而且成功加载的。其他函数可以调用,但就是这一类向dll传递参数的函数不行,好郁闷。
def文件中要不要定义呢?
要不要在头文件中声明void _decelspec(dllExport) GetParams(int);呢?
我是用MFC AppWizard(dll)制作的dll
呵呵,这么晚了你还在工作呀,真累,谢谢你。
薛定谔之死猫 2004-03-30
  • 打赏
  • 举报
回复
你LoadLibrary了没有?
薛定谔之死猫 2004-03-30
  • 打赏
  • 举报
回复
extern "C" void __decelspec(dllExport) GetParams(int myParam)
{
GlobalParam = myParam;

}
zhang865 2004-03-30
  • 打赏
  • 举报
回复
晕,还有这种情况呢?用显示调用看看有没有问题。
mfkzj 2004-03-30
  • 打赏
  • 举报
回复
提议:你可以将所传入的数值使用字符串传进去 然后在DLL中进行处理 你试试
danshuihepan 2004-03-30
  • 打赏
  • 举报
回复
参照MFC注释,在函数中加了AFX_MANAGE_STATE(AfxGetStaticModuleState()),居然正确了。
呵呵,不过不是太明白为什么。
danshuihepan 2004-03-30
  • 打赏
  • 举报
回复
谢谢各位,问题解决了,
原来只需在DEF文件的EXPORTS中增加函数的说明:myfunc就可以了。
至于写出_decelspec(dllExport)那时因为脱离了VC时写出的,程序无此问题。呵呵,没记牢。谢谢笨猫指出。

可又发现了一新问题,我的DLL是个键盘钩子,我在vc制做的程序中为全局变量GlobleVariable赋值5,可在其它进程中按键盘弹出的窗口中显示该全局变量为0,vc制作的程序中该全局变量就是5,我对此问题不解,期望专家们继续解答!
rivershan 2004-03-30
  • 打赏
  • 举报
回复
typedef void (*func)(int);
func myfunc = (func)GetProcAddress(ThedllInstance,"GetParams");
(myfunc)(5);

还有,是__declspec(dllexport),不是__decelspec(dllExport)~
注意正确性~

16,471

社区成员

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

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

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