利用现有资源创建MS Visual C ++ DLL项目

时间:2018-09-03 16:41:13

标签: c++ visual-c++ dll

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

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

  • 文件|新增|从现有代码进行项目
  • 选定的Visual 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

接下来,我决定尝试创建一个新的新库项目,只是为了观察差异以获得一些提示,但这无济于事-即使在文件结构方面也存在太多差异...

我的问题是:

  • 我为特定目的选择的Microsoft Visual C ++是一个很好的选择吗?
  • 如果是这样,我在这里做什么错了?

2 个答案:

答案 0 :(得分:0)

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

您只想从库中导出要使用的方法。尝试将__declspec(dllexport)与这些方法一起使用。请检查此链接:

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

另外,输出应该在build文件夹而不是源代码文件夹

答案 1 :(得分:0)

可以将.h文件编译到库中,编译器不在乎-但是UI可以。 不过,您可以通过直接编辑.vcxproj文件来进行调整。

在这样做的同时,请确保<ClCompile>部分包含:

  <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

请注意,您可以使用命令行来构建DLL项目:

"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" -target:Clean,Build

(假设您当前的目录是.vcxproj所在的目录)