【发布时间】:2020-01-26 02:47:03
【问题描述】:
所以我有一块运行 Windows 10 IoT 并使用 UWP 应用程序的开发板。我在板上运行了特定于板的 IO 的驱动程序,但现在我希望使用提供的库来访问和使用这些 IO。如果您还想查看提供的库,请在此处找到 (https://www.rtd.com/software/CM/CR/aDIO_windows_v05.04.00.zip)
由于我更熟悉只是添加一个 .dll 文件作为参考并继续进行,因此我首先尝试了该方法。收到有关 COM 组件或类似内容的错误。所以我联系了电路板制造商,询问我应该如何继续安装这个库。他们将我发送到此页面 (https://docs.microsoft.com/en-us/cpp/porting/how-to-use-existing-cpp-code-in-a-universal-windows-platform-app?view=vs-2019#targetText=Porting%20a%20C%2B%2B%20Library%20to%20a%20Windows%20Runtime%20Component&targetText=You%20can%20use%20it%20in,app%20code%2C%20regardless%20of%20language),这很有意义,因为驱动程序位于 c++ 库中。
我遵循了在不创建新项目的情况下将本机 DLL 移植到 UWP 部分。我没有问题就进入第6步。在第 6 步之后重建时,我收到一条错误消息,提示 不支持使用静态版本的 C++ 运行时库 (http://prntscr.com/pazh69)。查了一下,它说我需要更改其他设置。
所以我右键单击 Project>Properties>C/C++>Code Generation 并将 RunTime Library 切换到 /MDd。这似乎解决了这个错误。再次尝试重建。
接下来我遇到了一个问题,即 .c 源文件无法与我之前从 microsoft 指南中启用的 /ZW 标志一起使用。因此,我进入了每个源文件并从它们中删除了 /ZW 标志。
最后,再次重建,得到这个错误: http://prntscr.com/pazidr
无法解析的外部符号错误。我还没有找到有效的解决方案,因为这显然不是我的库,我很困惑从哪里开始尝试调试。
我想我的总体问题是: 1. 是否可以将此库转换为在 UWP 中使用? 2. 源文件是 .c 文件而不是 .cpp 文件是否存在问题? 3. 是否有针对此特定问题的解决方案,使我能够拥有一个正常工作的 UWP 库? 4. 是否有不同/更好的流程来完成我想要完成的工作?
非常感谢您,我知道这是一个很重要的问题。
【问题讨论】:
-
UWP 是 Microsoft 为提供可在未来 30 年内持续使用的操作系统 API 所做的努力。 winapi 中给程序员和用户带来无尽痛苦的不良旧做法被彻底消除,注册表接近该列表的顶部。
标签: visual-c++ uwp static-libraries