mfc导入dll的问题

街霸2 2014-01-29 06:55:36
我新手,刚学的,不懂怎么导dll

我用VC6.0 MFC DLL生成了一个DLL,那个def文件的函数名写好了,函数实现也写好了 如下图:
void CSoundApp::PlayMusic(/*int type*/)
{
/* if (F_MUSIC_BEGIN==type)
{
PlaySound(".\\music\\begin.wav",NULL,SND_ASYNC|SND_FILENAME);
}
*/
PlaySound(".\\music\\warning4.wav",NULL,SND_ASYNC|SND_FILENAME);
}


在MFC中动态调用

void CTest1Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
HINSTANCE hinst;
hinst=LoadLibrary("sound.dll");
typedef void (*play)(/*int a*/);
play playmusic=(play)GetProcAddress(hinst,"PlayMusic");
playmusic(/*5*/);

}

这样子可以运行(但是不知道潜在有什么问题)

但是我给这个函数加个参数,就是上面代码 注释起来的那些 这样运行点击能产生音乐,但是完了就出现


网上搜说DLL函数入栈顺序错了 什么的 我新手看不懂啊 求神指导一下
...全文
140 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2014-01-30
  • 打赏
  • 举报
回复
你导出一个纯函数,然后它内部去调用类的实例方法PlayMusic等
真相重于对错 2014-01-30
  • 打赏
  • 举报
回复
类成员函数不能这么调用
schlafenhamster 2014-01-30
  • 打赏
  • 举报
回复
错误上说 “调用约定”不对

15,471

社区成员

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

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