0

我使用 RAD Studio 10 Seattle 创建了一个新的 VCL 表单。
我在设计时添加了一个 NotificationCenter。然后我编译它并成功运行它。

但是当我做了以下两个步骤时:
1. 去

项目 -> 选项 -> C++ 链接器

并取消选中“与动态 RTL 链接”选项。

2.去了

项目 -> 选项 -> 包 -> 运行时包

并取消选中“与运行时包链接”选项。

未选中这些选项是为了使 .exe 独立,即能够在没有 IDE 的情况下执行 .exe 文件。因此,当取消选中这些选项时,所有库和包都链接到 .exe 文件。

但是现在当我编译它时,在链接阶段它给了我以下错误:

[ilink64 Error] Error: Unresolved external 'SHStrDupW' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|System.Win.Notification.o
[ilink64 Error] Error: Unresolved external 'WindowsDeleteString' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|Winapi.UI.Notifications.o
[ilink64 Error] Error: Unresolved external 'RoInitialize' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|System.Win.WinRT.o
[ilink64 Error] Error: Unresolved external 'RoUninitialize' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|System.Win.WinRT.o
[ilink64 Error] Error: Unresolved external 'WindowsGetStringRawBuffer' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|System.Win.WinRT.o
[ilink64 Error] Error: Unresolved external 'WindowsCreateString' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|System.Win.WinRT.o
[ilink64 Error] Error: Unresolved external 'RoGetActivationFactory' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|System.Win.WinRT.o
[ilink64 Error] Error: Unresolved external 'RoActivateInstance' referenced from D:\PROGRAM FILES\EMBARCADERO\EMBARCADERO\STUDIO\17.0\LIB\WIN64\RELEASE\RTL.A|System.Win.WinRT.o

所以我搜索了我的

Embarcadero/17.0/

第一个链接器错误中的参考目录,SHStrDupW并找到三个扩展名为 .h 或 .hpp 的文件,并将它们包含到我的项目中,但结果相同。

有谁知道如何修复这个错误,我会很感激各种帮助?:)

PS:我为win32或win64操作系统编译它并不重要。

4

1 回答 1

1

链接器错误是指 Win32/WinRT API 函数。您需要添加Shlwapi.libruntimeobject.lib到您的项目以解析这些引用。

于 2015-10-22T03:45:28.237 回答