【发布时间】:2009-11-10 20:06:30
【问题描述】:
在我的代码中,我可以从 user32.dll 加载“MessageBoxA”并使用它,但如果我尝试从我的 DLL 加载和使用函数,我会崩溃。
我的 C# 代码:
[DllImport("SimpleDLL.dll")]
static extern int mymean(int a, int b, int c);
[DllImport("user32.dll")]
static extern int MessageBoxA(int hWnd,
string msg,
string caption,
int type);
[...]
这行得通
MessageBoxA(0, "Hello, World!", "This is called from a C# app!", 0);
这会崩溃
int mean = mymean(12, 14, 16);
还有我的 C++ DLL 代码: SimpleDLL.cpp:
extern "C" _declspec(dllexport) int mymean(int x, int y, int z)
{
return (x + y + z) / 3;
}
SimpleDLL.def:
LIBRARY "SimpleDLL"
mymean
SimpleDLL.dll 被复制到与我从 C# 代码编译的 .exe 相同的文件夹中。使用依赖遍历器,我可以看到加载 SimpleDLL.dll 所需的所有 DLL。
【问题讨论】:
-
您看到的异常是什么?
-
定义“崩溃”。正如您所说,您没有向任何人提供任何可以帮助我们解决您的问题的信息。 “崩溃”可能意味着一千件事中的任何一件,包括“我的电脑速度穿过房间并撞上电视”,这可能不太可能。缩小范围怎么样?