创建可执行 COM 作为 ATL 项目并在 C# 中使用它
Posted
技术标签:
【中文标题】创建可执行 COM 作为 ATL 项目并在 C# 中使用它【英文标题】:Creating executable COM as ATL project and use it in C# 【发布时间】:2017-06-24 10:58:47 【问题描述】:尝试在可执行文件中创建 COM 对象并在 C# 项目中使用它:
在可执行文件中创建 COM。
使用 ATL 项目创建
添加类:
编译和运行没有问题。
尝试在 C# 项目中使用并失败。 项目自行注册...失败。可能有什么问题? VS 以管理员身份启动。
【问题讨论】:
工具箱需要一个 ActiveX 控件,没有任何迹象表明您实际创建了一个。好吧,你没有,它不可能是一个 EXE 项目,并且“ATL 简单对象向导”不会创建一个。这并不简单。改用 Project > Add Reference,代码中的new
语句。我也非常,非常强烈建议您不要创建 EXE 服务器,当您从托管代码中使用它们时,它们有许多非常锋利的边缘,当 COM 不存在时,它们总是会导致大量出血很好理解。
【参考方案1】:
您应该在 C# 项目中添加对服务器类型库的引用才能使用它:
-
在解决方案资源管理器中右键单击
References
,然后单击Add a reference
在引用管理器中选择 COM。
选择您的类型类型库(在您的示例中为 ComTstLib
)
在“解决方案资源管理器”中,打开刚刚添加的引用的快捷菜单,然后选择“属性”。在“属性”窗口中,确保将“嵌入互操作类型”属性设置为 True。这会导致 Visual Studio 在您的可执行文件中嵌入 COM 类型的类型信息,从而无需将主互操作程序集与您的应用一起部署。
在部署时,您只需要确保您的 com 服务器已经安装在客户端机器上。
另见msdn
【讨论】:
以上是关于创建可执行 COM 作为 ATL 项目并在 C# 中使用它的主要内容,如果未能解决你的问题,请参考以下文章
将 C++ ATL 可执行应用程序从 VS2003 迁移到 VS2013
如何使用VC ++中的Atl / Com项目通过outlook添加ins,将选定的收件箱邮件作为附件发送