[liblouis-liblouisxml] Re: Questions about the VS projects

  • From: "Norbert Markus" <hamilfonz@xxxxxxxxx>
  • To: <liblouis-liblouisxml@xxxxxxxxxxxxx>
  • Date: Wed, 19 Apr 2017 23:08:07 +0200

Hi Neal,
There is a separate VS solution specifically for file2brl.exe. I don't want to 
state any non-sense before I've gotten that far myself but I can simply see 
that pull request #23 contains two solutions: one for liblouisutdml.dll and 
another for file2brl.exe.
Thanks for drawing my attention to the fact that nmake scripts are encapsulated 
into the VS project's build mechanism. I wasn't aware of it. I am just 
beginning to look around in the stuff. It seems there is still a lot to 
understand.
Thanks a lot for the nmake excerpt. Any such information is welcome.
Best Regards, Norbert. 


From: Neil Soiffer 
Sent: Wednesday, April 19, 2017 9:28 PM
To: liblouis-liblouisxml@xxxxxxxxxxxxx 
Subject: [liblouis-liblouisxml] Re: Questions about the VS projects


FYI: I too am using the VS solution. If you look at the .vcxproj file, it 
basically calls nmake (copied relevant commands below for your convenience), so 
there shouldn't be any  difference from doing the commands yourself from a 
command line. Of course if you are debugging or developing something, that's 
where using VS's IDE is really useful.


In case you weren't aware, the makefiles do not mention file2brl and so they 
(and the VS solution) won't build it. It looks like you need to modify 
Makefile.nmake to include building and invoking the makefile.am in the tools 
dir, but I don't need that file and I'm out of my league in answering questions 
about building it.


======= from vcxproj file =======

mkdir libslib
set LXCCFLAGS= /wd4005
nmake  /f makefile.nmake
del /f /q liblouisutdml.lib
nmake /f makefile.gen liblouisutdml.lib
copy liblouisutdml.lib libslib




On Wed, Apr 19, 2017 at 1:40 AM, Norbert Markus <hamilfonz@xxxxxxxxx> wrote:

  Hi Neil,
  I was relatively lucky with the nmake script for liblouisutdml. It has gone 
through with no fatal errors and built the dll but it did not create 
file2brl.exe that I still badly need. I modified MakeFile.nmake neither for 
liblouis nor for liblouisutdml. I don't know what factorsaved me from fatal 
errors.

   Readme.windows says that Libxml2 version 2.7.2 is needed. First I tried to 
deviate from it but my lack of discipline was quickly retaliated, so I urgently 
fetched the right version but I could only find the source. Thanks for the hint 
about how to build its binaries. The paths are correct in configure.mk I 
believe.

  However, after experimenting with the command line tools for weeks with 
partial success, I decided to turn my hand to the Visual Studio solution.
  Thank You all in advance if any progress is made on my side.

  Norbert.


  From: Neil Soiffer 
  Sent: Wednesday, April 19, 2017 12:08 AM
  To: liblouis-liblouisxml@xxxxxxxxxxxxx 
  Subject: [liblouis-liblouisxml] Re: Questions about the VS projects


  I'm currently trying to build liblouis and liblousutdml with VS 2015. I am 
building from the current github versions (some suggested fixes below).  I have 
run into some problems with linking, but I think I can answer a few questions. 
I'm jumping into the middle of this discussion, so apologies if these have 
already been answered or my answers are off base...

  libxml2 2.7.8 can be found at 
https://git.gnome.org/browse/libxml2/tag/?h=v2.7.8

  I believe it gets built due to lines in windows\make_makefile.c


  I don't have and don't seem to need libiconv.dll and libiconv.lib.


  Make sure you edit windows\configure.mk in your liblouisutdml dir to point to 
the right locations.


  What I have found so far that needs changing are:
  liblouis ERRORS:
  liblouis\windows\Makefile.nmake
  commonTranslationFunctions.c not part of makefile


  change to:
  OBJ = commonTranslationFunctions.obj compileTranslationTable.obj 
lou_translateString.obj \
      lou_backTranslateString.obj logging.obj wrappers.obj pattern.obj


  add as first compile rule (to keep alphabetical):
  commonTranslationFunctions.obj: $(SRCDIR)\commonTranslationFunctions.c \
      $(HEADERS)
      $(CC) $(CFLAGS) $(SRCDIR)\commonTranslationFunctions.c



  liblouis WARNINGS:
  liblouis\compileTranslationTable.c:(4011) : 'ptn_regex': unreferenced local 
variable

  Fix by removing ptn_regex


  liblouisUTDML link WARNINGS/ERRORS:
  As I mentioned at the start, I haven't gotten liblouisUTDML to link yet. Some 
warnings are:
  4>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other 
libs; use /NODEFAULTLIB:library

  Lots like:
  4>liblouis.lib(lou_translateString.obj) : warning LNK4217: locally defined 
symbol _calloc imported in function _hyphenate


  And finally the fatal errors:
  4>liblouis.lib(compileTranslationTable.obj) : error LNK2019: unresolved 
external symbol __imp___stricmp referenced in function _findOpcodeNumber
  4>liblouis.lib(pattern.obj) : error LNK2019: unresolved external symbol 
__imp__puts referenced in function _pattern_output_expression
  4>MSVCRT.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol 
__except_handler4_common referenced in function __except_handler4



  If someone has seen these before and knows a fix, it would save me time 
figuring out what's not right with the linking.


  Thanks,



      Neil






  On Tue, Apr 18, 2017 at 8:36 AM, Norbert Markus <hamilfonz@xxxxxxxxx> wrote:


    Hi Paul,
    Thanks for your immediate response.
    I will appreciate if you can deal with my questions from Thursday on.
    In the meanwhile, I am trying to find the pull request for the liblouis VS 
project and to sort out the path controversy.
    Until no better solution is suggested, I am going to use the libxml 
binaries included in #23.

    Have a nice holiday!

    Best Regards, Norbert.



    From: Paul Wood 
    Sent: Tuesday, April 18, 2017 5:32 PM
    To: liblouis-liblouisxml@xxxxxxxxxxxxx 
    Subject: [liblouis-liblouisxml] Re: Questions about the VS projects


    Hi Norbert, 
    I am on holiday, but back Thursday. I hope to look at this this week, but I 
have plenty of work piled up, but I am keen to find out why your build is nor 
working. Liblouis is needed by liblouisutdml and both are needed by file2brl.
    Bye for now
    Paul


    On 18 Apr 2017 4:16 p.m., "Norbert Markus" <hamilfonz@xxxxxxxxx> wrote:

      Hi Paul,

      I am trying to get under control your liblouisutdml solution for Visual 
Studio downloaded from your pull request #23. My first objective is to be able 
to build the projects with ctrl-F5 encountering no errors. This is not yet 
achieved, unfortunately.
      A further objective is to update the source to the latest liblouis and 
liblouisutdml versions and to successfully build the projects including the 
DLLs and EXEs, thus to obtain an up-to-date runnable version (especially of 
file2brl.exe) for windows.

      In your previous related message, You wrote that you have created two 
projects, one for liblouis and another for liblouisutdml. What is the pull 
request number of the former (i.e., for liblouis).

      What is the relationship between these solutions from the respect of 
Visual Studio? Is there a common entry point to start the build process of all 
components, or should these projects be built in a particular order and to be 
referenced to each other?
      For instance, should I first build the project for liblouis, then another 
project for liblouisutdml referring to the result(s) of the liblouis build, and 
then in a third pass, should the project for file2brl be built based on the 
results of the former two?

      I have copied the folder for the liblouisutdml solution downloaded from 
git to:
      C:\users\Norbert\documents\Visual Studio 2015\projects
      Here I truncated the original download folder name to liblouisutdml.

      I found all the VS related stuff in subfolders of the windows folder. I 
assume, not everything is needed for VS in the complete downloaded folder, but 
at this moment I am unable to figure out what to jettison with no severe 
consequences.
      I found two .sln files:
      windows\msvc\file2brl\file2brl.sln
      windows\msvc\liblouisutdml\liblouisutdml.sln

      In both cases, I began the procedure by clicking on one of these that 
launched VS and loaded the solution. I did not hope it will work for the first 
try but I pressed ctrl-F5 and got a question: "This project is out of date. 
Would you like to build it anyway?" I am not exactly sure what it means but I 
answered yes to proceed.
      Then: build failed.
      In case of liblouisutdml.sln, there were 24 errors and 2 warnings. I 
checked a few of the errors complaining about that liblouisutdml.h and 
liblouis.h (several of them) cannot be found here:
      c:\users\Norbert\documents\Visual Studio 
2015\projects\liblouisutdml\liblouisutdml\liblouisutdml.h

      It hints, that I copied too many depths of the downloaded folder to the 
projects directory, but it is not exactly clear what path to provide for a 
successful build.
      Can you help me find out where to copy what of the material you've 
uploaded last year?
      I assume manually correcting all instances of the references to such 
missing files wouldn't be a wise method. 

      A similar attempt to build the project for file2brl produces 8 errors of 
similar kind. In addition to missing header files, there are errors missing 
certain type definitions, e.g., among others: loglevels and widechar if I 
remember well.

      What are the necessary steps to get these solutions configured 
appropriately?

      Some further questions:
      In the windows\msvc\liblouisutdml\lib folder, I found libiconv.dll, 
libiconv.lib, libxml2.dll and libxml2.lib needed for xml parsing.
      How did you obtain these files?
      Have you created another vs project to build them? (I haven't found 
anything in your liblouisutdml project to hint that libxml2 is built as part of 
that solution.)
      Have you created these files by running a command line build process 
included in the libxml2 source folders?
      Or have you found and downloaded prebuilt binaries?

      Earlier, I ran a few rounds with this: first I obtained the latest 
libxml2 version (2.9.4), but its header files caused lots of error messages 
when I tried to build liblouisutdml using a command line nmake tool.
      Later I found the source for version 2.7.2 that appeared to be adequate 
but the nmake script that builds liblouisutdml seems not to build the libxml2 
binaries.
      Then I looked around to download prebuilt binaries but I could not find 
versions as old as 2.7.2. Even the more recent packages include no .lib files.

      Please help me if you can, configure and build your original VS solution 
on my local machine.

      Thanks in advance, your help would be invaluable.
      Best Regards, Norbert.



GIF image

Other related posts: