2015-10-21 30 views
0

我已經使用RAD Studio 10 Seattle創建了一個新的VCL表單。
我在設計時添加了一個NotificationCenter。然後我編譯併成功運行它。C++ Builder 10西雅圖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的文件,並將它們包含到我的項目中,但後續的結果相同。

有沒有人有想法如何解決這個錯誤,我將不勝感激各種幫助? :)

P.S:如果我爲win32或win64操作系統編譯它並不重要。

回答

1

鏈接器錯誤是指Win32/WinRT API函數。您需要將Shlwapi.libruntimeobject.lib添加到您的項目中以解決這些參考。

+0

我加了 '#include #include ' 但是我似乎無法找到runtimeobject.hpp文件。我找到的是'runtimeobject.def'文件。 只有第一個庫的結果是一樣的。 @Remy Lebeau –

+0

'#include'.hpp'文件與鏈接到'.lib'文件不同。正如我前面所說的,您需要將'.lib'文件添加到您的項目中以解決鏈接器錯誤。 '.hpp'文件只是聲明函數(並且不,沒有'runtimeobject.hpp'文件,而是使用'Winstring.h'和'Roapi.h'),但'.lib'文件鏈接到DLL實現這些功能。 –

+0

這個文件是否有DLL版本?如果我使用'runtimeobject.lib'進行編譯,則無法在windows7上運行(regsvr32 mydll.dll失敗 - 我的代碼編譯爲DLL)''。如果它的DLL版本可用,我可以爲操作系統編寫運行時檢查。 –