【发布时间】:2011-09-21 08:35:40
【问题描述】:
第一段代码是我正在处理的示例,在将其更改为第二个示例后,它适用于 __declspec(dllexport),它给出了 __declspec(dllexport) 不能应用于具有 __clrcall 调用的函数惯例。删除那段代码确实使 dll 编译但该方法对目标 dll 不可用。此外,当我使用 PE Explorer 查看 DLL 时,没有导出方法。 __declspec(dllexport) 是否有托管变体?
extern "C" __declspec(dllexport) int UserInstruction (HWND hWnd,
HINSTANCE hInst,
double FAR *Function,
char FAR *Str1,
char FAR *Str2)
{
strcpy(Str1, "TEST FUNCTION");
return (TRUE);
}
extern "C" __declspec(dllexport) int UserInstruction (IntPtr hWnd, IntPtr hInst, double *Function, char *Str1, char *Str2)
{
Str1 = "TEST FUNCTION";
return (true);
}
【问题讨论】:
-
@Naszta 在那个答案之后,一切都建立了,但 PE Explorer 仍然看不到任何导出的方法。同样在尝试运行目标 exe 时,它仍然抱怨它无法访问 UserInstruction。该 exe 是在名为 PReS 的东西中制作的,无法更改,并且正在寻找要导出的 UserInstruction,就像它不受管理一样。
-
链接的答案不会生成非托管导出,已添加答案。