【发布时间】: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 的行为。只有罗伯特可以解决它。