2011-02-14 50 views
1

我可以從C++的Dll使用使用在C++這種方法C#訪問的方法:調用C++「INT WINAPI _tWinMain」從C#

extern "C" 
{ 
    __declspec(dllexport) void DisplayHelloFromDLL() 
    { 
    printf ("Hello from DLL !\n"); 
    } 
} 

這個偉大工程......但我一起工作的解決方案以此爲切入點:

extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, 
           HINSTANCE /*hPrevInstance*/, 
           LPTSTR lpCmdLine, 
           int /*nShowCmd*/) 

有沒有一種方法,我可以訪問此像我已經與__declspec方法呢?

乾杯

回答

1

答案是調用在C + +中創建使用功能:使用

extern "C" 
{ 
    __declspec(dllexport) void StartAgent() 
    { 
    printf ("Starting Agent... \n"); 

    StartServer(true); 
    RunMainLoop(); 
    } 
} 

這被當時稱爲在C#:

[DllImport("myDll.dll")] 
public static extern string StartAgent(); 

StartAgent(); 

從C#,進入C++得到調用此應用程序運行。

3

這不是一個DLL入口點,即是主應用程序的入口點。您需要通過CreateProcess將其創建爲新的進程。

3

_tWinMain實際上是#defineWinMainwWinMain。您還需要確保它實際上已導出。

這就是說,爲什麼DLL有一個WinMain函數呢?您應該只導出一個正常的功能,如DisplayHelloFromDLL

[編輯]

您要參考的項目 - 一個與_tWinMain - 是一個EXE(如@DeadMG說)。你不應該嘗試從C#中導入它的函數,就像你使用DLL一樣;相反,您應該使用Process.Start啓動它。

+0

DLL沒有WinMain入口點。 – 2011-02-14 15:06:03