![](/img/trans.png)
[英]Is it possible to install a windows service(EXE) written in C++(using CreateService WINAPI) by calling assemblyInstaller.Install from a C# code?
[英]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
实际上是WinMain
或wWinMain
的#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.