【问题标题】:Robert Giesecke's Unmanaged Exports and Visual Studio 2015 Build ErrorRobert Giesecke 的非托管导出和 Visual Studio 2015 构建错误
【发布时间】:2015-11-06 19:35:20
【问题描述】:

我们在 Delphi 应用程序中使用 Robert Giesecke 出色的非托管导出库已有一段时间了。我们刚刚升级到 Visual Studio 2015,它似乎不再工作了——我可以在 VS2013 中编译完全相同的项目,它工作正常,可以访问 DLL 中的函数等。我在 VS2015 中重新编译(完全相同代码和项目),我在 Unmanaged Exports 库上构建失败,如下所示:

Task Parameter:SdkPath=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\ (TaskId:44)
Cannot find lib.exe in 'K:\Visual Studio 2015\Common7\IDE\\..\..\VC\bin'. (TaskId:44)
Done executing task "DllExportAppDomainIsolatedTask" -- FAILED. (TaskId:44)
Done building target "RGieseckeDllExport" in project "BWSITwilio.csproj" -- FAILED.: (TargetId:73)

因此,库不会导出 DLL 中的函数供我在 Delphi 中访问。我可以在 VS2013 中停留一段时间,但 VS2015 中的库似乎有些不对劲(可能在 NETFX 4.6 文件夹中查找??)

我对想法持开放态度,因此我可以使用 VS2015——我正要卸载 2013,但现在不得不推迟。

提前感谢您的任何意见或建议——正是这个库让我们能够继续使用 Delphi,因为我们可以使用它访问 .NET 中的任何内容!

【问题讨论】:

  • 你试过追踪作者吗?从错误消息来看,lib.exe 似乎已从该工具预期的位置移至 VS 安装树中,或者它可能已从 VS2015 中完全删除(我还没有安装它)。
  • 对我来说,lib.exe 住在我的完整安装 Visual Studio 2015 Enterprise 上的 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin。您使用的是哪个版本的 Visual Studio 2015?
  • 为什么不针对较低的 .net 运行时?罗伯特正在使用一些不受支持的魔法,需要时间来赶上我猜罗伯特在堆栈上,所以你可以 ping 他。我认为这是前进的方向。 C++/CLI 混合模式可以让你摆脱这种依赖。
  • lib.exe 的路径显然与项目的预期不符。在您的 VS2015 安装中找到错误路径(错误消息中指示的路径)并将其更正到 lib.exe 的正确位置。
  • @Ken 提问者将如何做到这一点?提问者无法控制第三方 UnmanagedExports 的行为。只有罗伯特可以解决它。

标签: delphi visual-studio-2015


【解决方案1】:

Nuget 上的 1.2.7 版(2015 年 8 月 16 日)的发行说明包括:

在找不到 lib.exe 时不再使构建失败

我怀疑您使用的是旧版本,可以通过升级到最新版本来解决您的问题。

您可能使用的是在 VS 2015 发布之前构建的版本,我确信 Robert 的最新版本现在支持 VS 2015。

对于它的价值,即使仍然无法找到lib.exe,这也不会打扰您,因为您不需要将 .lib 文件导入 Delphi。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我可以通过手动将一些 Visual Studio 2013 文件复制到 2015 文件夹中来解决这个问题。我在我的电脑上搜索了lib.exe,并在两个应用程序的程序文件目录中使用了Beyond Compare。

    • 打开C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\ in 资源管理器,选择所有文件,复制。
    • 在资源管理器中打开C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\,粘贴。当提示替换时,选择跳过。

    完成此操作后,我能够再次编译在 Visual Studio 2015 中使用 RGiesecke.DllExport 的项目。

    我无法告诉您我安装了哪个特定版本的 2013,因为我已经卸载了,但显然这些文件是剩余的。我正在运行 MS VS Community 2015 版本 14.0.23107.0。

    不确定它是否相关,但我从 2013 年 bin 文件夹的版本中复制的 lib.exe 为 12.0.21005.1。

    【讨论】:

    • 更多信息:如果不安装 C++ 库,则会发生这种情况。 Professional 和更高版本会自动执行此操作,但 Express 不会。
    • 我不得不否决这个糟糕的建议。破坏 bin 目录不是解决方案。请删除此帖。你只会误导别人。
    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多