diff --git a/Source/Client/Mode/LoginMode.cpp b/Source/Client/Mode/LoginMode.cpp index a898ba4f9..7bbeae5a8 100644 --- a/Source/Client/Mode/LoginMode.cpp +++ b/Source/Client/Mode/LoginMode.cpp @@ -103,6 +103,8 @@ #include #include +extern template void std::string::reserve(std::string::size_type); + void TraceSelection(int selection); void TraceSelectionRange(int first, int last); diff --git a/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp b/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp index 435d7bee3..7c1e71aae 100644 --- a/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp +++ b/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp @@ -4,6 +4,8 @@ #include +extern template std::string::basic_string(const std::string&); + // OFFSET: 0x006F9EC0 // FUNCTION: fn_06888 CAnimatedEmitterEffect::CAnimatedEmitterEffect() { diff --git a/Source/Contents/Emblems/EmblemDataDownloadAsyncWork.cpp b/Source/Contents/Emblems/EmblemDataDownloadAsyncWork.cpp index 7b89ccfe8..430be79d2 100644 --- a/Source/Contents/Emblems/EmblemDataDownloadAsyncWork.cpp +++ b/Source/Contents/Emblems/EmblemDataDownloadAsyncWork.cpp @@ -11,6 +11,8 @@ #include #include +extern template std::string& std::string::assign(const char*, std::string::size_type); + namespace { constexpr char sourceFile[] = "C:\\repositories\\RagnarokClient\\RagnarokClient\\Contents\\Emblem\\CEmblemDataDownloadAsyncWork.cpp"; diff --git a/Source/Contents/Emblems/EmblemDataMgr.cpp b/Source/Contents/Emblems/EmblemDataMgr.cpp index 57366020c..8950ed4db 100644 --- a/Source/Contents/Emblems/EmblemDataMgr.cpp +++ b/Source/Contents/Emblems/EmblemDataMgr.cpp @@ -10,6 +10,8 @@ #include #include +extern template std::string& std::string::assign(const char*, std::string::size_type); + // STATIC: 0x013898D4 // GLOBAL: gl_24355 CEmblemDataMgr* g_emblemDataMgr; diff --git a/Source/Contents/Emblems/GuildEmblemLookup.cpp b/Source/Contents/Emblems/GuildEmblemLookup.cpp index 1dba6a3b7..c886520b0 100644 --- a/Source/Contents/Emblems/GuildEmblemLookup.cpp +++ b/Source/Contents/Emblems/GuildEmblemLookup.cpp @@ -3,6 +3,8 @@ #include "Contents/Guild/GuildMgr.h" #include "Resource/ResourceMgr.h" +extern template std::string::basic_string(const std::string&); + // OFFSET: 0x0065E450 // FUNCTION: fn_05174 std::string CGuildMgr::GetEmblemFilename(std::uint32_t guildId) { diff --git a/Source/Contents/UserData/AccountLinkedUserDataLoadAsyncWork.cpp b/Source/Contents/UserData/AccountLinkedUserDataLoadAsyncWork.cpp index 805277091..03367a178 100644 --- a/Source/Contents/UserData/AccountLinkedUserDataLoadAsyncWork.cpp +++ b/Source/Contents/UserData/AccountLinkedUserDataLoadAsyncWork.cpp @@ -13,6 +13,8 @@ #include #include +extern template std::string& std::string::assign(const char*, std::string::size_type); + namespace { constexpr char sourceFile[] = "C:" "\\repositories\\RagnarokClient\\RagnarokClient\\Contents\\AccountLinkedUserData\\CAcco" diff --git a/Source/Security/NProtectGameGuardMgr.cpp b/Source/Security/NProtectGameGuardMgr.cpp index 441c255b5..98f8b76b0 100644 --- a/Source/Security/NProtectGameGuardMgr.cpp +++ b/Source/Security/NProtectGameGuardMgr.cpp @@ -17,6 +17,8 @@ #include #include +extern template std::string::basic_string(const std::string&); + // GLOBAL: gl_24848 CNProtectGameGuardMgr* g_nProtectGameGuardMgr; diff --git a/Source/UI/Buttons/UINaviLinkButton.cpp b/Source/UI/Buttons/UINaviLinkButton.cpp index bab261e79..1a3d4e0c9 100644 --- a/Source/UI/Buttons/UINaviLinkButton.cpp +++ b/Source/UI/Buttons/UINaviLinkButton.cpp @@ -2,6 +2,9 @@ #include "UI/Navigation/NavigationLink.h" #include "UI/Buttons/UINaviLinkButton.h" +extern template std::string::basic_string(const std::string&); +extern template std::size_t std::_Traits_find>(const char*, std::size_t, std::size_t, const char*, std::size_t) noexcept; + // OFFSET: 0x0086DF60 // FUNCTION: fn_11062 UINaviLinkButton::UINaviLinkButton() : UITextButton() { diff --git a/Source/UI/Chat/UIChatRoomTitle.cpp b/Source/UI/Chat/UIChatRoomTitle.cpp index 345d3a97d..c233ac5ae 100644 --- a/Source/UI/Chat/UIChatRoomTitle.cpp +++ b/Source/UI/Chat/UIChatRoomTitle.cpp @@ -17,6 +17,9 @@ #include #include +extern template std::string std::string::substr(std::string::size_type, std::string::size_type) const; +extern template std::string& std::string::operator=(std::string&&) noexcept; + // OFFSET: 0x0084EF70 // FUNCTION: fn_10655 UIChatRoomTitle::UIChatRoomTitle() : UIWindow(0) { diff --git a/Source/UI/Items/UIMakeTargetProcessWnd.cpp b/Source/UI/Items/UIMakeTargetProcessWnd.cpp index c99c33cc5..0ae9b7db3 100644 --- a/Source/UI/Items/UIMakeTargetProcessWnd.cpp +++ b/Source/UI/Items/UIMakeTargetProcessWnd.cpp @@ -23,6 +23,7 @@ #include #include +extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; // INLINED static void AppendReplayRecord(std::vector& records, const std::vector& record) { diff --git a/Source/UI/Party/UIApplyForPartyWnd.cpp b/Source/UI/Party/UIApplyForPartyWnd.cpp index c89ef4e7d..67c7973ee 100644 --- a/Source/UI/Party/UIApplyForPartyWnd.cpp +++ b/Source/UI/Party/UIApplyForPartyWnd.cpp @@ -27,6 +27,8 @@ #include "Resource/MSGSTRINGID.h" #include +extern template std::string& std::string::operator=(std::string&&) noexcept; + // OFFSET: 0x007BAD00 // FUNCTION: fn_09275 UIApplyForPartyWnd::UIApplyForPartyWnd() diff --git a/Source/Utility/Threading/NThread.cpp b/Source/Utility/Threading/NThread.cpp index 364782e62..bda7edb3d 100644 --- a/Source/Utility/Threading/NThread.cpp +++ b/Source/Utility/Threading/NThread.cpp @@ -3,6 +3,8 @@ #include #include +extern template std::string::basic_string(const std::string&); + namespace { struct ThreadNameInfo { DWORD type;