[sword-devel] Win32 FileMgr Subclass

Tobias Klein contact at tklein.info
Sun Jul 26 10:01:03 EDT 2020


I'm getting similar error messages with Visual Studio 2019. Note that 
I'm also generating the make files via CMake.

First couple of error messages:

2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,2): 
error C2065: 'WIN32_FIND_DATAW': undeclared identifier
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19): 
error C2146: syntax error: missing ';' before identifier 'fileData'

2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19): 
error C2065: 'fileData': undeclared identifier

2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,2): 
error C2065: 'HANDLE': undeclared identifier

2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9): 
error C2146: syntax error: missing ';' before identifier 'findIterator'
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9): 
error C2065: 'findIterator': undeclared identifier
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,51): 
error C2065: 'fileData': undeclared identifier


Best regards,
Tobias

On 7/26/20 3:00 PM, Greg Hellings wrote:
>
>
> On Sun, Jul 26, 2020 at 6:42 AM Troy A. Griffitts 
> <scribe at crosswire.org <mailto:scribe at crosswire.org>> wrote:
>
>     I've just committed the last bit for fixing the WIN32 Unicode
>     issues.  If anyone can try compiling and running Xiphos without
>     the Xiphos patch or any other projects for Windows, and let me
>     know if things work for them in folders which include Unicode
>     character, I would appreciate it.  I've tested BibleCS and it now
>     works with a SWORD_PATH defined to /books/χαρις.  I've tested
>     using and installing modules in this configuration and believe all
>     the bugs are squashed, but I would love confirmation from other
>     projects.
>
>     Thanks for any feedback,
>
>     Troy
>
> During cross-compile I'm getting the following errors:
>
> [  6%] Building CXX object CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj
> /usr/bin/i686-w64-mingw32-g++  -DCLUCENE2 -DCURLAVAILABLE 
> -DCURLSFTPAVAILABLE -DEXCLUDEBZIP2 -DEXCLUDEXZ 
> -DGLOBCONFPATH=\"/usr/i686-w64-mingw32/sys-root/mingw/etc/sword.conf\" 
> -DUSEICUREGEX -DUSELUCENE -DU_USING_ICU_NAMESPACE -D_FTPLIB_NO_COMPAT 
> -D_ICU_ -Dsword_EXPORTS @CMakeFiles/sword.dir/includes_CXX.rsp 
> -D_ICUSWORD_ -g3 -Wall -O0 -D_ICUSWORD_   -o 
> CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj -c 
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static 
> member function 'static std::vector<sword::DirEntry> 
> sword::FileMgr::getDirList(const char*, bool, bool)':
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:395:2: error: 
> 'WIN32_FIND_DATAW' was not declared in this scope
>   395 |  WIN32_FIND_DATAW fileData;
>       |  ^~~~~~~~~~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:398:2: error: 
> 'HANDLE' was not declared in this scope
>   398 |  HANDLE findIterator = FindFirstFileW(wcharPath, &fileData);
>       |  ^~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:6: error: 
> 'findIterator' was not declared in this scope
>   399 |  if (findIterator != INVALID_HANDLE_VALUE) {
>       |      ^~~~~~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:22: error: 
> 'INVALID_HANDLE_VALUE' was not declared in this scope
>   399 |  if (findIterator != INVALID_HANDLE_VALUE) {
>       |                      ^~~~~~~~~~~~~~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:401:35: error: 
> 'fileData' was not declared in this scope
>   401 |    SWBuf dirEntName = wcharToUTF8(fileData.cFileName);
>       |                                   ^~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:405:49: error: 
> 'FILE_ATTRIBUTE_DIRECTORY' was not declared in this scope
>   405 |     i.isDirectory = fileData.dwFileAttributes & 
> FILE_ATTRIBUTE_DIRECTORY;
>       | ^~~~~~~~~~~~~~~~~~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:40: error: 
> 'fileData' was not declared in this scope
>   409 |   } while (FindNextFile(findIterator, &fileData) != 0);
>       |                                        ^~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:12: error: 
> 'FindNextFile' was not declared in this scope
>   409 |   } while (FindNextFile(findIterator, &fileData) != 0);
>       |            ^~~~~~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:410:3: error: 
> 'FindClose' was not declared in this scope; did you mean '_findclose'?
>   410 |   FindClose(findIterator);
>       |   ^~~~~~~~~
>       |   _findclose
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:397:17: 
> warning: unused variable 'wcharPath' [-Wunused-variable]
>   397 |  const wchar_t *wcharPath = (const wchar_t 
> *)wcharBuf.getRawData();
>       |                 ^~~~~~~~~
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static 
> member function 'static int sword::FileMgr::createParent(const char*)':
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:436:5: error: 
> '_wmkdir' was not declared in this scope; did you mean 'mkdir'?
>   436 |     _wmkdir((const wchar_t *)utf8ToWChar(buf).getRawData());
>       |     ^~~~~~~
>       |     mkdir
> make[2]: *** [CMakeFiles/sword.dir/build.make:283: 
> CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj] Error 1
>
> I'm assuming there's a new package or macro I need to define? On my 
> system the WIN32_FIND_DATAW struct is defined in both minwinbase.h and 
> shtypes.h. I'm building with MinGW which might have a different header 
> structure than your compilers, if you're using Borland?
>
> --Greg
>
>
>     On 7/20/20 7:18 PM, Greg Hellings wrote:
>>     Sorry for the previous blank email - user error when I tried to
>>     reply:
>>
>>     On Sun, Jul 19, 2020 at 2:40 PM Tobias Klein <contact at tklein.info
>>     <mailto:contact at tklein.info>> wrote:
>>
>>         Thanks for giving me the background on this, Karl! I
>>         appreciate it!
>>
>>         Is Xiphos the only frontend that has been patching Sword for
>>         this purpose? Then I suppose all other frontends suffer from
>>         this issue, huh?
>>
>>
>>     When I first encountered this patch in Xiphos I tested with
>>     BibleTime and The Sword Project for Windows and both of them do
>>     crash under these circumstances.
>>
>>     Yes, other toolkits such as Qt do have wrappers for this
>>     shortcoming already, but none of the other front ends I've worked
>>     with have bothered to put in the effort to produce a patched
>>     version of Sword to fix the crash.
>>
>>     --Greg
>>
>>     _______________________________________________
>>     sword-devel mailing list:sword-devel at crosswire.org  <mailto:sword-devel at crosswire.org>
>>     http://www.crosswire.org/mailman/listinfo/sword-devel
>>     Instructions to unsubscribe/change your settings at above page
>     _______________________________________________
>     sword-devel mailing list: sword-devel at crosswire.org
>     <mailto:sword-devel at crosswire.org>
>     http://www.crosswire.org/mailman/listinfo/sword-devel
>     Instructions to unsubscribe/change your settings at above page
>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20200726/5492c9d5/attachment-0001.html>


More information about the sword-devel mailing list