Я новый человек для темы импорта dll в С++, и, возможно, мой вопрос очень прост, но я не могу найти его в google.
У меня очень простая С++ win32 dll:
#include <iostream>
using namespace std;
extern "C"
{
__declspec(dllexport) void __stdcall DisplayHellowFromDLL()
{
cout<<"Hi"<<endl;
}
}
Когда я вызываю этот метод из С#, у меня нет никаких проблем, вот код С#
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 как:
__declspec(dllexport) void DisplayHellowFromDLL()
без __stdcall, у меня тоже нет проблем, и возникает вопрос:
Когда мне действительно нужен __declspec (dllexport) TYPE __stdcall и когда я могу использовать только тэг __declspec (dllexport)?
Большое спасибо.