繁体   English   中英

从C#调用C ++“ int WINAPI _tWinMain”

[英]calling C++ “int WINAPI _tWinMain” from C#

我可以使用C#在C ++中使用C#从C ++ Dll访问一种方法:

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方法一样访问此文件?

干杯

那不是DLL入口点,而是主要的应用程序入口点。 您将需要通过CreateProcess将其创建为新流程。

_tWinMain实际上是WinMainwWinMain#define 您还需要确保已将其实际导出。

话虽这么说,为什么一个DLL根本没有WinMain函数? 您应该只导出一个普通函数,例如DisplayHelloFromDLL

[编辑]

您尝试引用的项目-带有_tWinMain -是一个EXE(如@DeadMG所说)。 您不应该像使用DLL一样尝试从C#导入其功能。 相反,您应该使用Process.Start启动它。

答案是使用以下方法调用在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 ++中调用它可以使应用程序运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM