oldbastard42 Posted July 6, 2019 Share Posted July 6, 2019 Hello. I installed Microsoft VisualStudio 2019 community edition and was able (with help from WolfMark) to compile the latest version (06.17) of F4SE immediately without any problems. When I try with ANY other version (I tried 06.10, 06.15 and 06.16) - I get over 3000 errors relating to "string". Here's a quick look at the first few - 1>------ Build started: Project: common_vc11, Configuration: Debug x64 ------ 1>IBufferStream.cpp 1>IDataStream.cpp 1>IDebugLog.cpp 1>IDirectoryIterator.cpp 1>C:\Users\Kev\Downloads\f4se_0_06_16\src\common\IDirectoryIterator.h(11,7): error C2039: 'string': is not a member of 'std' 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\cstdarg(18): message : see declaration of 'std' 1>C:\Users\Kev\Downloads\f4se_0_06_16\src\common\IDirectoryIterator.h(11,25): error C3646: 'GetFullPath': unknown override specifier 1>C:\Users\Kev\Downloads\f4se_0_06_16\src\common\IDirectoryIterator.h(11,25): error C2059: syntax error: '(' 1>C:\Users\Kev\Downloads\f4se_0_06_16\src\common\IDirectoryIterator.h(11,31): error C2238: unexpected token(s) preceding ';' 1>C:\Users\Kev\Downloads\f4se_0_06_16\src\common\IDirectoryIterator.cpp(31,1): error C2511: 'std::string IDirectoryIterator::GetFullPath(void)': overloaded member function not found in 'IDirectoryIterator' 1>C:\Users\Kev\Downloads\f4se_0_06_16\src\common\IDirectoryIterator.h(3): message : see declaration of 'IDirectoryIterator'Here's the full log. After fiddling about for a few hours, I found that if I add #include <string>to the top of common_vc11/iPrefix.h - then all errors vanish and it seemingly compiles perfectly! I didn't have to do that when compiling F4SE version 06.17 - it worked flawlessly out of the box! There must be a simple reason for this, anyone have any clues? Thanks :smile:. Link to comment Share on other sites More sharing options...
Wolfmark Posted July 6, 2019 Share Posted July 6, 2019 The IPrefix.h from F4SE 0.6.17 version contains #include <string>. The IPrefix.h from F4SE 0.6.16 version doesn't contain the #include <string>. This is why you compiled without changes 0.6.17. Probably in Visual Studio 2012 (the one used by F4SE team) the <string> header is already included by other headers. And this is not true in Visual Studio 2019 (the version you're using) anymore. For older F4SE versions you have to add #include <xmmintrin.h> to BSSkin.h, but they fixed this in 0.6.14. Also you had to add #include <algorithm> to PapyrusObjects.h. Link to comment Share on other sites More sharing options...
oldbastard42 Posted July 6, 2019 Author Share Posted July 6, 2019 Hi WolfMark, I didn't want to annoy you by asking you directly (after you did so much hard work for me) but I'm so glad you replied :D. Hahaha, yes you're absolutely correct - I didn't notice that - DOH! Oh well, it's always better to have an expert opinion rather than rely on luck. I just tested the version I built against F4SE 06.16 and it works perfectly. I went through your instructions again and found qword_1458CEE98, so I'm quietly confident that I can find it again in the next F4SE version. Thanks again for your wisdom & help WolfMark :thumbsup:. Link to comment Share on other sites More sharing options...
Recommended Posts