[sword-devel] Building libsword on windows
Jon Behrens
biz at crimsonthread.com
Wed Dec 31 21:47:00 MST 2014
Hi Daniel
I'm sure you've thought of this, but can you get everything to build and
link using VS2013?
I was having similar problems trying to call libsword functions in the
flatapi from C# - the
libsword.dll would compile without complaint but the C# application
would crash saying it
could not find libsword. (Hence the tutorial once I had finally gotten
it to work.)
You might try a 'Hello World' level application that calls a libsword
function using only
Visual Studio. If that works, you can be sure that your problems are
between MinGW and VS
Jon
On 12/31/2014 7:02 PM, Daniel Sheffield wrote:
> Hi Jon,
>
> Yeah, I hadn't done all the steps correctly - nevertheless MSVS was
> still generating the dll.
> It appears it's a mingw/msvc interoperability issue because the dll is
> generated but I can't link against it.
>
> I can't seem to build it with cmake either. I get as far as the
> libsword.a and libsword.dll.a but no libsword.dll. When I put those in
> my build dir and link: -llibsword
> compiles fine but then I get run-time error libsword.dll missing.
>
> :(
>
> --
> In the beginning Kibo created the Internet. Now the Internet was
> formless, and empty. Randomness was upon the face of computing, and
> the Spirit of ARPA moved upon the face of the computers. Then Kibo
> said, "Let there be data": and there was data. Kibo saw the data, and
> it was good, so Kibo divided the data from the randomness, and Kibo
> named the data Information, and the randomness Clueless. And the
> Information and the Clueless were the first Network.
>
> On Thu, Jan 1, 2015 at 1:45 PM, Jon Behrens <biz at crimsonthread.com
> <mailto:biz at crimsonthread.com>> wrote:
>
> Hi Daniel
> Since your problem is in the flatapi, continue in the instructions
> for the c# bindings.
> There are some changes that need to be made in the dll export
> declaration to get
> it to work with Windows. Those are steps 5 and 6 of the tutorial.
> Also, in step 9, you
> need to make sure that the dlls listed are in the same directory
> as your project output
> (or in a lib path)
> Jon
>
> On 12/31/2014 4:04 PM, Daniel Sheffield wrote:
>> Hi Jon,
>>
>> Thanks for that help, I changed icu-sword dir back to icu (it
>> really is the latest icu - not icu-sword!), and rebuilt the dll.
>> Still can't link to it: -lsword -licuuc54 -licuin54 -licudt54
>> Linker doesn't complain can't find lib or anything, but still
>> outputs the errors in my prior message.
>> undefined reference to
>> 'sword:SWModule\SWMgr\SWkey\SWBuf\MarkupFilterMgr' - which appear
>> to all be in flatapi.h so I really don't know why they aren't
>> their after following the directions here:
>> http://www.crosswire.org/wiki/CSharp_Bindings_on_Windows
>>
>> Cheers for your help,
>> Daniel
>>
>> --
>> In the beginning Kibo created the Internet. Now the Internet was
>> formless, and empty. Randomness was upon the face of computing,
>> and the Spirit of ARPA moved upon the face of the computers. Then
>> Kibo said, "Let there be data": and there was data. Kibo saw the
>> data, and it was good, so Kibo divided the data from the
>> randomness, and Kibo named the data Information, and the
>> randomness Clueless. And the Information and the Clueless were
>> the first Network.
>>
>> On Thu, Jan 1, 2015 at 8:03 AM, Jon Behrens
>> <jbb at crimsonthread.com <mailto:jbb at crimsonthread.com>> wrote:
>>
>> Hello Daniel
>> Look here
>> http://www.crosswire.org/wiki/CSharp_Bindings_on_Windows
>> The first section of this tutorial deals with changes needed
>> to get Sword 1.7.3 to build
>> with VS2013. You can ignore the remainder.
>> Be blessed,
>> Jon
>>
>> On 12/30/2014 8:29 PM, Daniel Sheffield wrote:
>>
>> Hi all,
>>
>> I've been having trouble building libsword.dll for windows.
>> I've followed the information here:
>> http://www.crosswire.org/wiki/Tutorial:Compiling_%26_Installing_SWORD_on_Windows
>>
>> Finally figured out (searching the sword-devel archives)
>> that all I needed to do was rename icu to icu-sword and
>> similarly rename the curl output dir to what MSVS was
>> expecting and I was able to build the solution.
>>
>> However: I can't seem to link against the
>> libsword.dll/libsword.lib.
>> The only way I have been able to successfully build my
>> project with libsword is by adding objects.a (generated
>> by cross-compiling libsword on linux using mxe) to the
>> list of sources which effectively copies all the objects in.
>>
>> This is what I get at compile time when I link against
>> libsword.dll
>> agents\sword\sword.o:sword.cpp:(.text+0x41): undefined
>> reference to
>> `sword::MarkupFilterMgr::MarkupFilterMgr(char, char)'
>> agents\sword\sword.o:sword.cpp:(.text+0x5c): undefined
>> reference to `sword::SWMgr::SWMgr(sword::SWFilterMgr*, bool)'
>> agents\sword\sword.o:sword.cpp:(.text+0x95): undefined
>> reference to `sword::SWKey::SWKey(char const*)'
>> agents\sword\sword.o:sword.cpp:(.text+0xb5): undefined
>> reference to `sword::SWKey::~SWKey()'
>> agents\sword\sword.o:sword.cpp:(.text+0xdd): undefined
>> reference to `sword::SWModule::renderText(char const*,
>> int, bool)'
>> agents\sword\sword.o:sword.cpp:(.text+0x10b): undefined
>> reference to `sword::SWMgr::~SWMgr()'
>> agents\sword\sword.o:sword.cpp:(.text+0x129): undefined
>> reference to `sword::SWKey::~SWKey()'
>> agents\sword\sword.o:sword.cpp:(.text+0x13a): undefined
>> reference to `sword::SWMgr::~SWMgr()'
>> agents\sword\sword.o:sword.cpp:(.text$_ZN5sword5SWBufD1Ev[__ZN5sword5SWBufD1Ev]+0xfffffe6c):
>> undefined reference to `sword::SWBuf::nullStr'
>>
>> These compile time errors disappear when I add objects.a
>> to the list of sources AND there are no run-time errors
>> either (despite neither linking against icu).
>>
>> I have no idea whats going on. Perhaps it's because I
>> build libsword.dll with MS Visual Studio and am trying to
>> link it with MinGW's g++...
>>
>> If anyone can help I'd appreciate it!
>>
>> Daniel Sheffield
>>
>> Associate Engineer - Software
>> Level 2, Building A, The Millennium Building Phase 2, 600
>> Great South Road
>> Ellerslie,
>> Auckland,
>> 1051
>>
>> +64 9 926 2895 <tel:%2B64%209%20926%202895> Office
>> +64 21 1408 708 <tel:%2B64%2021%201408%20708> Mobile
>> http://www.emulex.com
>>
>> On Tue, 30 Dec 2014, Troy A. Griffitts wrote:
>>
>> Done. Thanks for subscribing!
>>
>>
>> On 12/30/2014 03:21 PM, Daniel Sheffield wrote:
>>
>> Sorry to bother you yet again...
>> I filled out some form
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> and was directed to send an e-mail to
>> sword-support to verify I am not a robot.
>> My question is when my e-mail and password will
>> be active on sword-devel. I just tried it now and
>> was rejected.
>>
>> I'm aware this all takes time - I'm not in a rush
>> - just checking that I've actually completed all
>> the steps to subscribe.
>>
>> Cheers,
>>
>> Daniel Sheffield
>>
>> Associate Engineer - Software
>> Level 2, Building A, The Millennium Building
>> Phase 2, 600 Great South Road
>> Ellerslie,
>> Auckland,
>> 1051
>>
>> +64 9 926 2895 <tel:%2B64%209%20926%202895> Office
>> +64 21 1408 708 <tel:%2B64%2021%201408%20708> Mobile
>> http://www.emulex.com
>>
>> On Tue, 30 Dec 2014, Peter von Kaehne wrote:
>>
>>
>> Daniel, i think you should subscribe to
>> sword-devel. Sword support is more about
>> people not being
>> able to understand the programms they
>> downloaded etc. I am sure your problem has
>> been discussed
>> several times on that list.
>>
>> Biblecs might be a VS programme, but most
>> others use msys which is a pared down unixy
>> buildenvironment
>>
>> On 30 Dec 2014 20:49, Daniel Sheffield
>> <d.j.yotta at gmail.com
>> <mailto:d.j.yotta at gmail.com>> wrote:
>> Yeah, I've stumbled accross MSYS which
>> appears to a particular build environment on
>> windows?
>>
>> In regards to my linking issuse, the latest
>> news is that I have managed to link against the
>> libsword.dll.a and, because of the run time
>> errors, tracked the undefined references down to
>> the icu*54.dlls. I'll try recompiling them (I
>> also downloaded pre-compiled ones for icu too -
>> dunno if I've tried those).
>>
>> I don't know why, but when I use libsword.a
>> instead of libsword.dll.a, I get neither compile
>> time nor run time errors. Then again, I
>> haven't tried actually calling the sword
>> functions yet
>> in my windows port - just wanted it to
>> compile first!
>>
>> Atm, I'm reading up about all these forms of
>> library files. I think that will help me figure
>> out what is going on.
>>
>> Cheers,
>> Daniel
>>
>> --
>> In the beginning Kibo created the Internet.
>> Now the Internet was formless, and empty.
>> Randomness was upon the face of computing,
>> and the Spirit of ARPA moved upon the face of the
>> computers. Then Kibo said, "Let there be
>> data": and there was data. Kibo saw the data,
>> and it
>> was good, so Kibo divided the data from the
>> randomness, and Kibo named the data Information,
>> and the randomness Clueless. And the
>> Information and the Clueless were the first
>> Network.
>>
>> On Wed, Dec 31, 2014 at 12:37 AM, Peter von
>> Kaehne <refdoc at crosswire.org
>> <mailto:refdoc at crosswire.org>> wrote:
>> Not a programmer, but i am thinking ,
>> most things are done successfully via msys
>> rather than via MS stuff.
>>
>> On 30 Dec 2014 05:34, Daniel Sheffield
>> <d.j.yotta at gmail.com
>> <mailto:d.j.yotta at gmail.com>> wrote:
>> >
>> > Hi,
>> >
>> > I develop mainly on linux and have
>> been linking to the sword library for a
>> project I'm working on (bibq hosted on
>> sourceforge).
>> >
>> > I have ported my project also to
>> windows, but have been having difficulty
>> compiling libsword.dll.
>> > Xiphos was the only package I could
>> find that had this dill precompiled and I
>> tried using that.
>> > After suffering dll hell, I finally
>> managed to find all the dlls the xiphos
>> libsword.dll depended on only to have
>> missing functions at runtime.
>> >
>> > Idealy, I want to compile
>> libsword.dll from scratch but I have tried
>> every which
>> way to do this.
>> >
>> > . I followed the instructions here:
>> http://crosswire.org/wiki/Tutorial:Compiling_%26_Installing_SWORD_on_Windows
>>
>> eventually building all the
>> dependancies except clucene which eludes all
>> attempts
>> at building on windows. I attempted
>> compiling without clucene and appeared to get
>> errors that didn't relate to clucene
>> anyhow and couldn't progress any further.
>> > . I then tried cross-compiling on
>> linux targeted at windows. I used mxe and
>> things went pretty smoothly but I get
>> link errors at the final step of linking
>> libsword.dll (to do with icu).
>> >
>> > I'm about ready to give up and use
>> jsword - but that feels so wrong!
>> >
>> > I guess I'm not really expecting to
>> be hand-held through the build process, but
>> my main question is why I can't simply
>> build using MS Visual Studio? There seems
>> to be a problem with MS Visual Studio
>> 2013 as I've encountered even errors such as
>> "can not find stdio.h/stdlib.h" when
>> generating the clucene solution with cmake.
>> The solution file for SWORD also
>> doesn't build. I'm most likely noobing something
>> here though because I never develop on
>> windows before - other than "hello world"
>> type stuff. And now I know why!
>> >
>> > Cheers if you can help.
>> > Daniel
>> > --
>> > In the beginning Kibo created the
>> Internet. Now the Internet was formless, and
>> empty. Randomness was upon the face of
>> computing, and the Spirit of ARPA moved
>> upon the face of the computers. Then
>> Kibo said, "Let there be data": and there was
>> data. Kibo saw the data, and it was
>> good, so Kibo divided the data from the
>> randomness, and Kibo named the data
>> Information, and the randomness Clueless. And
>> the Information and the Clueless were
>> the first Network.
>>
>>
>>
>>
>>
>> _______________________________________________
>> sword-support mailing list
>> sword-support at crosswire.org
>> <mailto:sword-support at crosswire.org>
>>
>>
>>
>>
>> _______________________________________________
>> 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
>>
>>
>>
>>
>> This body part will be downloaded on demand.
>
>
> _______________________________________________
> 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/20141231/051cc72c/attachment-0001.html>
More information about the sword-devel
mailing list