从现有源创建 MS Visual C++ DLL 项目

Create MS Visual C++ DLL project out of existing sources

本文关键字:Visual C++ DLL 项目 MS 创建      更新时间:2023-10-16

我的目标是将现有的C++类(存储在一组*.h文件中的遗留代码(编译为 DLL,以便可以进一步集成到 C# 应用程序中。

为此,似乎最好使用MS Visual Studio。我对这种环境没有经验,所以我尝试了在 MSDN 和其他 SO 答案上找到的天真方法:

  • 文件 |新品 |从现有代码进行项目
  • 选定的视觉C++
  • 选定的文件位置是包括这些.h文件中使用的引用的基础
  • 指定了项目名称
  • 让向导查找并添加目录下的所有C++文件
  • 选择"使用 Visual Studio"进行生成,项目类型为"动态链接库 (DLL( 项目">
  • 未选中以下任何复选框(ATL、MFC、CLR(
  • 在调试设置的"包括搜索路径 (/I("中指定.
  • 目录
  • 选中"发布设置"中的"与调试配置相同">
  • 单击"完成"按钮

这会在目录中创建几个 VS 文件:

mylibrary.sln
mylibrary.vcxproj
mylibrary.vcxproj.filters
mylibrary.vcxproj.user

以这种方式创建项目后,我按F6或选择Build| 从菜单中Rebuild solution

然后我希望构建在某处生成.dll文件,但它没有出现。仅显示以下文件:

.vs/mylibrary/v15/.suo
.vs/mylibrary/v15/Browse.VC.db
.vs/mylibrary/v15/Browse.VC.opendb
.vs/mylibrary/v15/ipch/AutoPCH/efad7c74cd39331b/EXAMPLE.ipch
Debug/mylibrary.log
Debug/mylibrary.tlog/mylibrary.lastbuildstate

接下来,我决定尝试创建一个全新的库项目,只是为了观察差异以获得一些提示,但这并没有帮助 - 即使在文件结构上也有太多差异......

我的问题是:

  • 我选择的 MS Visual C++是否适合给定目的?
  • 如果是这样,我在这里做错了什么?

我认为您的步骤可能是正确的,我认为这是使用 C# 应用程序中代码的正确方法。您绝对可以通过导入方法从 C# 调用C++库。

您错过了仅从库中导出要使用的方法。 尝试将__declspec(DLL导出(与这些方法一起使用。 请查看此链接:

https://msdn.microsoft.com/en-us/library/a90k134d.aspx。

此外,输出应位于构建文件夹,而不是源代码文件夹

.h文件编译到库中是可以的,编译器不在乎 - 但是,UI 会。 不过,您可以通过直接编辑.vcxproj文件来调整这一点。

执行此操作时,请确保<ClCompile>部分包含:

<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

请注意,可以使用命令行生成 DLL 项目:

"%ProgramFiles(x86)%Microsoft Visual Studio2017CommunityMSBuild15.0BinMSBuild.exe" -target:Clean,Build

(这假设您当前的目录是带有.vcxproj的目录(