将 C++ .exe 项目转换为 dll

Posted

技术标签:

【中文标题】将 C++ .exe 项目转换为 dll【英文标题】:Converting a C++ .exe project to a dll 【发布时间】:2009-04-13 17:45:37 【问题描述】:

Microsoft 提供了 vshadow 的源代码来操作 VSS(卷影服务 [shadow copy]),我对其进行了一些修改,但我想将其制成 dll,以便在我的 C# 项目中使用它。我不知道该怎么做,源代码相当简单,应该不会太难,但我真的不知道从哪里开始。我应该如何将其转换为可用的 dll 而不是编译为可执行文件?

更新:有人已经这样做了:http://www.alphaleonis.com/2008/08/alphavss-bringing-windows-shadow-copy-service-vss-to-net/

【问题讨论】:

【参考方案1】:

您需要在 Visual Studio 中更改项目设置以创建 DLL。此外,您还需要定义 dll 入口点。

但是,VSS 是一组 COM API,因此您可以使用 pinvoke 从 C# 直接调用它们,而不是使用此包装 C++ 可执行文件。

由于 SDK 仅包含库,而不包含 DLL,因此您必须创建一个 dll 项目才能使用它。

这是good blog-how-to。

您需要下载VSS SDK(如果您还没有)。

Decent article on pinvoke.

希望这会有所帮助。

【讨论】:

从 C# 中使用 VSS 需要导入哪些 VSS dll? Microsoft.VisualStudio.SourceSafe.Interop。我的在这里:c:\Program Files\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\Microsoft.VisualStudio.SourceSafe.Interop.dll。我不确定pinvoke与什么有关?使用 COM 互操作? (或者我错过了什么?) 是的,它不是可视源安全的,它是卷影复制服务;) ...并且源安全具有“影子文件夹”功能 - 我看到了混乱。对不起!!【参考方案2】:

这样的任务可以是微不足道的,也可以是极其复杂的。在您的情况下,问题可能倾向于复杂的结果。

这样做的原因是您需要将现有界面替换为一组您可以使用的新功能。然后需要导出这些函数,以便您可以将它们导入 dotNet。

【讨论】:

所以在编程相关的留言板上询问编程相关的问题是题外话? -1。没有有用的信息,态度也不好。这个问题是完全有效的,硬度是相对的...... 问题不在于如何创建DLL,而在于如何将特定的exe转换为DLL。任何缺少代码的东西都会被认为是无用的。当我提到完成这项工作应采取的步骤时,我确实相信我掌握了有价值的信息。问题格式错误。

以上是关于将 C++ .exe 项目转换为 dll的主要内容,如果未能解决你的问题,请参考以下文章

将迄今为止作为独立可执行文件开发的 C++ 项目转换为 DLL

C++ exe 到 dll 以用作组件 (CLR)

怎么将.jpg .bmp .gif 图片转换成 iso exe res dll 等格式?

如何将 C++ 非托管 DLL 转换为 C#

Visual Studio 2015。在安装项目中转换为所有 dll 的 c++ 控制台应用程序

在 MS VC 2013 Express 中将 C++ dll 从 32 位转换为 64 位