用VB重写的c++ out-proc COM服务器.. NET和跨c++ EXE共享
C++ out-proc COM server rewritten in VB.NET and shared accross C++ EXE
我在VB.NET中重写了一个输出过程COM ErrorModule。该模块是我们老的COM c++程序所使用的。VB。. NET对COM类及其接口使用相同的GUI,并使用与旧c++相同的DispId。我试图使这个透明的c++模块,所以我们不需要改变他们。它们只是使用从旧ErrorModule生成的旧ErrorModule.h进行编译。我打算保留它。它可以工作,但是:
老:(C++ COM client) MainProgram.exe
(C++ COM server) LogicalModule.exe
(C++ COM server) ErrorModule.exe, implements IError
现在:
(C++ COM client) MainProgram.exe
(C++ COM server) LogicalModule.exe
(VB.NET COM assembly) ErrorModule.dll, re-implements IError
MainProgram.exe
ErrorModule.dll
LogicalModule.exe
ErrorModule.dll
通常MainProgram调用LogicalModule。如果LogicalModule检测到一个错误,将创建一个COM类ErrorModule,并将其接口IError返回给MainProgram,其中IError. showerrordlg()将最终被调用。
可以在VB中工作。净吗?MainProgram可以使用LogicalModule的ErrorModule中的IError COM接口吗?
我正在测试两个c++之间IError的编组。它工作,但我有以下问题。每次我在VB中更改ErrorModule.dll。. NET,重新构建,然后编组停止工作,我得到和错误"ESP的值没有正确保存…"。
我意识到如果我重建c++模块,那么它又开始工作了吗?我在ErrorModule.dll的注释中放入一行代码,重新构建,然后它停止与ESP错误一起工作?两者之间没有直接联系吗?全部重建VB。就我所知,。NET会更新注册表吗?
我仔细考虑了一下我想做的事情,现在我觉得这很疯狂。由。net接口创建的一个COM接口,返回给一个c++ EXE,后者又把它传递给另一个试图调用它的方法的c++ EXE。调用进程的堆栈上的变量被另一个进程使用?我不是栈专家,但我开始觉得这完全是疯狂的。
Steven Doggart在之前的一篇文章中提供了解决方案。我将在c++中保持进程外服务器的方式,但它将是一个空shell,一个VB的代理。实现相同的功能,但在VB。. NET而不是c++。
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- System.AccessViolationException:shared_ptr C# .NET 和 C++ 应用程
- C++/CLI targetting .NET Core 3.1
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- WM_PAINT消息频率:C#(.Net Framework 4.7.2 WinForms)与C++
- 如何将 VB.Net 字符串作为字符*传递给C++dll?
- 从C++标头中导入常量而不是硬编码它们:扩展 .net 控件?
- VB.NET DLL中的C++DLL函数复制
- .NET核心应用程序无法加载C++DLL
- TEA在VB.NET中的实现
- 如何使用Winforms C#或C++.Net在不更改文件中其他内容的情况下修改jpg文件中的Orientation e
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误
- 如何使函数返回数组?用于制作在VB.NET中使用的DLL
- 生成.NET包装程序需要源代码吗
- 从c++11 time_t创建一个可转换为.net DateTime的字符串