合并c可执行文件,托管COM dll和.Net gui

时间:2017-10-05 22:58:36

标签: c# c++ .net dll com

packetlistener.exe :我有一个主动侦听和接收数据包的c应用程序。

comwrapper.dll :包装非托管c可执行文件的C ++ COM dll

guiapp.exe :一个.NET gui,引用comwrapper.dll并使用它来显示信息和处理事件。

我目前启动应用程序的方式:

  1. 使用命令行参数启动packetlistener.exe。
  2. 启动guiapp.exe
  3. 我花了最后几个小时试图弄清楚如何将它很好地打包到一个过程中。

    我尝试做的是将packetlistener.exe编译为dll,然后将其包含在guiapp项目中。但是,作为guiapp的一部分启动packetlistener,我完全迷失了。

    我是Windows开发新手,觉得我做错了。 我是以错误的方式解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Process.Start从.net应用程序启动流程:

Process.Start("packetlistener.exe", "-arg1 -arg2");

答案 1 :(得分:0)

所以我最终搞清楚自己想做什么。

我将我的C应用程序编译成DLL并公开了一个可以启动它的函数。

然后我使用PInvoke在一个单独的线程中调用该函数,以便它可以开始收集和发送数据包。

COM DLL似乎神奇地引用了在自己的线程中运行的C程序。

既然我无法PInvoke嵌入式DLL,我必须在临时文件中解压缩,你可以在这里了解它。

How can I extract a file from an embedded resource and save it to disk?

最后,我留下了一个可执行文件。