用rundll32.exe调用一个dll文件里的函数 怎么传递参数?

呆瓜西西 2015-07-08 10:55:14
我想练习 编写dll文件,实现对里边函数的调用。

extern "C" __declspec(dllexport)int sub(int q)


{
char c[25];
int d=q-4;
itoa(d,c,10);
MessageBox(0,c, "a-b;结果:", 1);
return 0;
}

我用rundll32.exe调用这个函数,

是不是传递传递参数有问题?,显示是这样的
有没有知道这是为什么的?
...全文
406 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
呆瓜西西 2015-07-09
  • 打赏
  • 举报
回复
引用 1 楼 cjqpker 的回复:
要学习DLL,最好还是写个测试程序,来调用你的DLL。 你这个问题多半是rundll32.exe 传参部分用错了
好的 谢谢
呆瓜西西 2015-07-09
  • 打赏
  • 举报
回复
引用 4 楼 GKatHere 的回复:

extern "C" __declspec(dllexport)int sub(HWND hwnd, HINSTANCE hinst, LPSTR q, int nCmdShow)
{
	char c[25];
	int d=atoi(q)-4;
	itoa(d,c,10);
	MessageBoxA(0,c, "a-b;结果:", 1);
	return 0;
}
//  原调用就可
奥 有固定格式啊。谢谢
呆瓜西西 2015-07-09
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
[quote=引用 2 楼 zhao4zhong1 的回复:] 先通读MSDN中dll相关章节。
就连楼主头像中的孩纸都正在通读MSDN中dll相关章节呢![/quote] 好吧 我是新手 不值得哦啊从何学起
iyomumx 2015-07-08
  • 打赏
  • 举报
回复
rundll32调用的导出函数应该有如下签名:
void CALLBACK
  EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
更详细的参考https://support.microsoft.com/en-us/kb/164787
赵4老师 2015-07-08
  • 打赏
  • 举报
回复
先通读MSDN中dll相关章节。
假正经的班长 2015-07-08
  • 打赏
  • 举报
回复
要学习DLL,最好还是写个测试程序,来调用你的DLL。 你这个问题多半是rundll32.exe 传参部分用错了
赵4老师 2015-07-08
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
先通读MSDN中dll相关章节。
就连楼主头像中的孩纸都正在通读MSDN中dll相关章节呢!
GKatHere 2015-07-08
  • 打赏
  • 举报
回复

extern "C" __declspec(dllexport)int sub(HWND hwnd, HINSTANCE hinst, LPSTR q, int nCmdShow)
{
	char c[25];
	int d=atoi(q)-4;
	itoa(d,c,10);
	MessageBoxA(0,c, "a-b;结果:", 1);
	return 0;
}
//  原调用就可

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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