Я новичок в теме импорта DLL C ++ и, возможно, мой вопрос очень простой, но я не могу найти его в Google.
У меня очень простая DLL-библиотека C ++ win32:
#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?
Большое спасибо.