【发布时间】:2011-09-14 03:00:51
【问题描述】:
我是 C++ dll 导入主题的新手,我的问题可能很简单,但我在 google 上找不到。
我有一个非常简单的 C++ win32 dll:
#include <iostream>
using namespace std;
extern "C"
{
__declspec(dllexport) void __stdcall DisplayHellowFromDLL()
{
cout<<"Hi"<<endl;
}
}
当我从 C# 调用这个方法时我没有任何问题,这里是 C# 代码
namespace UnmanagedTester
{
class Program
{
[DllImport(@"C:\CGlobalDll")]
public static extern void DisplayHellowFromDLL();
static void Main(string[] args)
{
Console.WriteLine("This is C# program");
DisplayHellowFromDLL();
}
}
}
正如我所料,输出是:“这是 C# 程序”“嗨”。
现在,如果我将 C 函数的声明更改为:
__declspec(dllexport) void DisplayHellowFromDLL()
没有__stdcall,我也没有任何问题,问题是:
什么时候我真的需要 __declspec(dllexport) TYPE __stdcall,什么时候我只能使用 __declspec(dllexport) TYPE ?
非常感谢。
【问题讨论】: