[sword-devel] Win32 FileMgr Subclass

Tobias Klein contact at tklein.info
Sun Jul 26 14:25:34 EDT 2020


To address the errors below I had to add the include for <windows.h> 
both in *src/mgr/filemgr.cpp* and in *src/modules/commons/zipmgr.cpp*.

After that I'm getting the next error:

1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410): 
error C2664: 'BOOL FindNextFileA(HANDLE,LPWIN32_FIND_DATAA)': cannot 
convert argument 2 from 'WIN32_FIND_DATAW *' to 'LPWIN32_FIND_DATAA'
1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410): 
note: Types pointed to are unrelated; conversion requires 
reinterpret_cast, C-style cast or function-style cast

Best regards,
Tobias

On 7/26/20 4:44 PM, Troy A. Griffitts wrote:
>
> Can one of you guys try simply including <windows.h> at the top of 
> filemgr.cpp and see if this fixes it for you?
>
>
> On 7/26/20 4:01 PM, Tobias Klein wrote:
>>
>> 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
>>
>> _______________________________________________
>> 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
>
> _______________________________________________
> 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/fd8ebc32/attachment-0001.html>


More information about the sword-devel mailing list