【发布时间】:2010-11-04 11:08:49
【问题描述】:
我正在尝试编写一个 exe,它还可以导出可以用 rundll32 调用的函数。这可能吗?如果可以,为什么不能这样工作?
我密切关注Microsoft's advice on this。
#define RUNDLL32(func) extern "C" __declspec(dllexport) void CALLBACK func(HWND hWnd, HINSTANCE hInst, LPSTR lpszCmdLine, int nCmdShow)
RUNDLL32(MyFunc)
{
MessageBox(0, 0, 0, 0);
}
但是当被调用时
rundll32 myprog.exe,_MyFunc@16
rundll32 崩溃/DEP 启动。
【问题讨论】:
-
你为什么要使用函数名的错位?不要
rundll32 myprog.exe,MyFunc工作? -
那是因为函数是以该名称导出的。我可以制作一个 .def 文件并以不同的名称导出它,但我不在乎它是否看起来有点奇怪(rundll32 找到它,这不是问题)另外我真的不知道如何告诉它使用.def 文件。
标签: winapi crash dllexport rundll32