如何在我的 C# Visual Studio 项目中添加 VC++ DLL 作为引用?

Posted

技术标签:

【中文标题】如何在我的 C# Visual Studio 项目中添加 VC++ DLL 作为引用?【英文标题】:How can I add a VC++ DLL as a reference in my C# Visual Studio project? 【发布时间】:2009-03-20 11:07:12 【问题描述】:

我想将 VC++ DLL 引用添加到我的 C# Visual Studio 项目中。但是当我尝试添加它时,我看到“它不是一个有效的程序集或 COM 组件”。

请建议我如何在 C# 项目中使用 VC++ DLL 作为参考。

【问题讨论】:

看起来像 ***.com/questions/315051/… 的副本 【参考方案1】:

在 C# 中使用 C++ DLL 有两种选择:COM 互操作或 P/Invoke。 COM 互操作包括在 C++ DLL 中创建一个 COM 对象,然后将其添加为引用。此时,您可以像使用 C# 对象(大部分情况下)一样使用 COM 对象。

P/Invoke 允许您从 C# 调用导出的函数(想想从 C# 调用标准 Win32 API 函数)。这可能更容易设置,因为您需要做的就是导出一个函数,但这可能会导致您在 C++ DLL 中重构您的代码,因为这不是一种非常 OOP 的做事方式。

【讨论】:

【参考方案2】:

您只能在 C# 中使用准备好使用的 C++ 组件,例如使用 C++/CLI 编写或编写为 COM 服务器。

如果你的组件是一个普通的 C++ dll,你需要编写一些包装代码,最好是 C++/Cli

【讨论】:

【参考方案3】:

我不确定这是否解决..

运行:

tlbimp /out:MyOldCom.dll MyNewAssembly.tlb

然后像使用任何其他程序集一样使用它。

请参考

http://msdn.microsoft.com/en-us/library/aa302324.aspx

http://msdn.microsoft.com/en-us/magazine/cc301501.aspx

即)

一种方法是将您的 DLL 打包为 COM 类,另一种方法是使用 DllImport

【讨论】:

以上是关于如何在我的 C# Visual Studio 项目中添加 VC++ DLL 作为引用?的主要内容,如果未能解决你的问题,请参考以下文章

我的 C# win 表单应用程序在内部调用批处理脚本,如何在 Visual Studio 中导出时对最终用户隐藏它?

如何在 Visual Studio 中调试类库

如何在 Visual Studio 2019 中为 C# WPF 切换 XAML 中的行注释

如何在 Visual Studio 中创建独立的 exe? [复制]

如何将本地数据库文件添加到 Visual Studio Mac 2017

Visual Studio C#,安装应用程序后找不到 DLL