<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI Emoji";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
span.pre
        {mso-style-name:pre;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=DE link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US>I added a note in the README of sword-build-win32, mentioning the definition SWUSINGDLL.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><a href="https://github.com/tobias-klein/sword-build-win32/blob/master/README.md#definition-swusingdll">https://github.com/tobias-klein/sword-build-win32/blob/master/README.md#definition-swusingdll</a><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Best regards,<br>Tobias</span></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:contact@tklein.info">Tobias Klein</a><br><b>Sent: </b>Sonntag, 27. September 2020 16:48<br><b>To: </b><a href="mailto:sword-devel@crosswire.org">SWORD Developers' Collaboration Forum</a><br><b>Subject: </b>Re: [sword-devel] Latest SWORD trunk/Linkingerror/Missingsymbol:sword::InstallMgr::userDisclaimerConfirmed</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US>Hi Troy,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal>Thanks!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>_<i>MSC</i>_VER should be automatically defined when using a Microsoft compiler. <a href="https://docs.microsoft.com/de-de/cpp/preprocessor/predefined-macros?view=vs-2019">https://docs.microsoft.com/de-de/cpp/preprocessor/predefined-macros?view=vs-2019</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SWMAKINGDLL is defined by the CMake build system if MSVC is also defined (automatically the case for Microsoft compilers).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SWUSINGDLL has <u>not</u> been defined in node-sword-interface before. I just added that definition and that seems to solve my linking issues on Windows! Yay!<o:p></o:p></p><div><div><div><div><div><div><div><div><div><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:black'>Before I had issues both with </span><span style='font-size:10.5pt;font-family:Consolas;color:#267F99'>sword</span><span style='font-size:10.5pt;font-family:Consolas;color:black'>::</span><span style='font-size:10.5pt;font-family:Consolas;color:#267F99'>SWBuf</span><span style='font-size:10.5pt;font-family:Consolas;color:black'>::</span><span style='font-size:10.5pt;font-family:Consolas;color:#001080'>nullStr</span><span style='font-size:10.5pt;font-family:Consolas;color:black'> a</span><span style='color:black'>nd with </span><span style='font-size:10.5pt;font-family:Consolas;color:#267F99'>InstallMgr</span><span style='font-size:10.5pt;font-family:Consolas;color:black'>::</span><span style='font-size:10.5pt;font-family:Consolas;color:#001080'>userDisclaimerConfirmed</span><span style='font-size:10.5pt;font-family:Consolas;color:black'>. </span><span style='color:black'>They’re both resolved now!</span><span style='font-size:10.5pt;font-family:Consolas;color:black'><o:p></o:p></span></p></div></div></div></div></div></div></div></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Is this documented anywhere? <span style='font-family:"Segoe UI Emoji",sans-serif'>😊</span> I had no idea that I needed to provide this definition on Windows when linking against the DLL.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Best regards,<br>Tobias<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>From: </b><a href="mailto:scribe@crosswire.org">Troy A. Griffitts</a><br><b>Sent: </b>Sonntag, 27. September 2020 12:41<br><b>To: </b><a href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a><br><b>Subject: </b>Re: [sword-devel] Latest SWORD trunk /Linkingerror/Missingsymbol:sword::InstallMgr::userDisclaimerConfirmed<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p>Dear Tobias,</p><p>I have looked and looked at this and don't have any idea why there would be linking issues.  I could guess what is causing it.  The method setUserDisclaimerConfirmed is implemented inline in the header file, so it will be outside the DLL and in your client code and it is trying to reference a static member of the InstallMgr class.  But we already declare class InstallMgr _declspec(dllimport).  You can see this in defs.h:</p><p>...</p><p>// _declspec works in BC++ 5 and later, as well as VC++<br>#if defined(_MSC_VER)<br><br>#  ifdef SWMAKINGDLL<br>#    define SWDLLEXPORT _declspec( dllexport )</p><p>Note a couple things: we use a single underscore.  Looking this up, it seems a single underscore is the older way to do this now that newer versions of the C++ spec reserve double underscores for things like this, but it still works.  Also, you might check that _MSC_VER is defined and that SWMAKINGDLL is defined in your build system when you build the DLL and that SWUSINGDLL is defined in your build system when you link your client to the DLL. -- from looking at defs.h lines 62ff.</p><p>BUT HAVING SAID ALL THIS, I have no idea why you would be able to link to ANY methods in the DLL if this wasn't all correct.  I don't see anything different with the static bool InstallMgr::userDisclaimerConfirmed compared to any of the other methods or statics.  Can you access any other static member of a class?  How about trying to link with a reference to:</p><p>InstallMgr::MODSTAT_OLDER;</p><p>And then maybe try a static from another class:</p><p>SWMgr::MODTYPE_BIBLES;</p><p><o:p> </o:p></p><p>Thanks for any more info you might provide on this.</p><p>Troy</p><p><o:p> </o:p></p><div><p class=MsoNormal>On 9/22/20 11:57 AM, Tobias Klein wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal><span lang=EN-US>I’ve gone for an alternative implementation as a work-around. Before, I was calling InstallMgr::setUserDisclaimerConfirmed. That caused the linking issue on Windows. I’ve now switched to inheriting InstallMgr with a custom method “isUserDisclaimerConfirmed”.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Best regards,<br>Tobias</span><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>From: </b><a href="mailto:contact@tklein.info">Tobias Klein</a><br><b>Sent: </b>Montag, 21. September 2020 21:58<br><b>To: </b><a href="mailto:sword-devel@crosswire.org">SWORD Developers' Collaboration Forum</a><br><b>Subject: </b>Re: [sword-devel] Latest SWORD trunk / Linkingerror/Missingsymbol:sword::InstallMgr::userDisclaimerConfirmed<o:p></o:p></p></div><p class=MsoNormal> <o:p></o:p></p><div><div><div><p class=MsoNormal style='line-height:14.25pt;background:white'><span lang=EN-US style='color:black'>I tried to fix this by setting the CMake variable  </span><span style='color:black'>CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE</span><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:black'><a href="https://cmake.org/cmake/help/v3.4/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html">https://cmake.org/cmake/help/v3.4/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html</a></span><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:black'> </span><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:black'>But that didn’t help! I still get the same linker issue.</span><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:black'> </span><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:black'>However, in the above linked Cmake help it says: </span><i><span style='color:#444444;background:white'>For global </span></i><em><span style='font-family:"Calibri",sans-serif;color:#444444;background:white;font-style:normal'>data</span></em><i><span style='color:#444444;background:white'> symbols, </span></i><span class=pre><i><span style='color:#444444;background:#ECF0F3'>__declspec(dllimport)</span></i></span><i><span style='color:#444444;background:white'> must still be used when compiling against the code in the </span></i><span class=pre><i><span style='color:#444444;background:#ECF0F3'>.dll</span></i></span><i><span style='color:#444444;background:white'>.</span></i><i><span style='color:black'> </span></i><i><span style='color:#444444;background:white'>All other function symbols will be automatically exported and imported by callers.</span></i><o:p></o:p></p></div></div></div><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:#444444;background:white'> </span><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:#444444;background:white'>Aren’t we dealing with a „global data symbol“ in this case?</span><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><i><span style='color:#444444;background:white'> </span></i><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><i><span style='color:#444444;background:white'>See also:<br><a href="https://docs.microsoft.com/de-de/cpp/build/importing-into-an-application-using-declspec-dllimport?view=vs-2019">https://docs.microsoft.com/de-de/cpp/build/importing-into-an-application-using-declspec-dllimport?view=vs-2019</a></span></i><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><i><span style='color:#444444;background:white'> </span></i><o:p></o:p></p><p class=MsoNormal style='line-height:14.25pt;background:white'><span style='color:#444444;background:white'>Best regards,<br>Tobias</span><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>From: </b><a href="mailto:contact@tklein.info">Tobias Klein</a><br><b>Sent: </b>Montag, 21. September 2020 11:29<br><b>To: </b><a href="mailto:sword-devel@crosswire.org">SWORD Developers' Collaboration Forum</a><br><b>Subject: </b>Re: [sword-devel] Latest SWORD trunk / Linking error/Missingsymbol:sword::InstallMgr::userDisclaimerConfirmed<o:p></o:p></p></div><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><span lang=EN-US>I’m still having the same issue with the latest SWORD trunk when linking on Windows.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Since this wasn’t an issue with SWORD trunk from May (SVN Rev. 3747), is there a way to fix this in SWORD?</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal>Best regards,<br>Tobias<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>From: </b><a href="mailto:contact@tklein.info">Tobias Klein</a><br><b>Sent: </b>Samstag, 29. August 2020 10:22<br><b>To: </b><a href="mailto:sword-devel@crosswire.org">SWORD Developers' Collaboration Forum</a><br><b>Subject: </b>Re: [sword-devel] Latest SWORD trunk / Linking error /Missingsymbol:sword::InstallMgr::userDisclaimerConfirmed<o:p></o:p></p></div><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><span lang=EN-US>This occurred to me when building automatically via GitHub actions and that is always a full-rebuild.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>I had this problem also in the past with manual Windows builds and the work-around was to “re-declare” the respective symbol in the software that links against Sword. I already had this issue before with sword::SWBuf::nullStr:</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>#if defined(_WIN32)</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>// For some reason this symbol is missing in the sword.dll on Windows, hence we include it here.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>char * sword::SWBuf::nullStr = (char *)"";</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>#endif</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Best regards,<br>Tobias</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>From: </b><a href="mailto:scribe@crosswire.org">Troy A. Griffitts</a><br><b>Sent: </b>Samstag, 29. August 2020 09:52<br><b>To: </b><a href="mailto:sword-devel@crosswire.org">SWORD Developers' Collaboration Forum</a><br><b>Subject: </b>Re: [sword-devel] Latest SWORD trunk / Linking error / Missingsymbol:sword::InstallMgr::userDisclaimerConfirmed<o:p></o:p></p></div><p class=MsoNormal> <o:p></o:p></p><p>Hi Tobias,</p><p>This did receive a bit of a reorganization, but the symbol is declared in include/installmgr.h:97 and is initialized with the other statics in installmgr.cpp:75.</p><p>Have you tried a full rebuild?</p><p>Is anyone else having linking troubles?</p><p>Troy</p><p> </p><div><p class=MsoNormal>On 8/29/20 9:20 AM, Tobias Klein wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal><span lang=EN-US>Hi Troy,</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Any feedback regarding this one?</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Thanks!</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Best regards,<br>Tobias</span><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>From: </b><a href="mailto:contact@tklein.info">Tobias Klein</a><br><b>Sent: </b>Sonntag, 16. August 2020 11:10<br><b>To: </b><a href="mailto:sword-devel@crosswire.org">SWORD Developers' Collaboration Forum</a><br><b>Subject: </b>[sword-devel] Latest SWORD trunk / Linking error / Missing symbol:sword::InstallMgr::userDisclaimerConfirmed<o:p></o:p></p></div><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Hi,<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>With the latest SWORD trunk I’m getting the following linking error:<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Creating library D:\a\ezra-project\ezra-project\node_modules\node-sword-interface\build\Release\node_sword_interface.lib and object D:\a\ezra-project\ezra-project\node_modules\node-sword-interface\build\Release\node_sword_interface.exp<o:p></o:p></p><p class=MsoNormal>repository_interface.obj : error LNK2001: unresolved external symbol "public: static bool sword::InstallMgr::userDisclaimerConfirmed" (?userDisclaimerConfirmed@InstallMgr@sword@@2_NA) [D:\a\ezra-project\ezra-project\node_modules\node-sword-interface\build\node_sword_interface.vcxproj]<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>The symbol sword::InstallMgr::userDisclaimerConfirmed is missing in the generated SWORD dll. Did something recently change regarding this symbol or how it is included in the build (based on CMake and Visual Studio 2019)?<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Best regards,<o:p></o:p></p><p class=MsoNormal>Tobias<o:p></o:p></p><p class=MsoNormal>_______________________________________________<o:p></o:p></p><p class=MsoNormal>sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a><o:p></o:p></p><p class=MsoNormal><a href="http://www.crosswire.org/mailman/listinfo/sword-devel">http://www.crosswire.org/mailman/listinfo/sword-devel</a><o:p></o:p></p><p class=MsoNormal>Instructions to unsubscribe/change your settings at above page<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'> <o:p></o:p></p><pre>_______________________________________________</pre><pre>sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a></pre><pre><a href="http://www.crosswire.org/mailman/listinfo/sword-devel">http://www.crosswire.org/mailman/listinfo/sword-devel</a></pre></blockquote><pre style='mso-margin-top-alt:0cm;margin-right:36.0pt;margin-bottom:5.0pt;margin-left:36.0pt'>Instructions to unsubscribe/change your settings at above page</pre><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'> </span><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><pre>_______________________________________________</pre><pre>sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a></pre><pre><a href="http://crosswire.org/mailman/listinfo/sword-devel">http://crosswire.org/mailman/listinfo/sword-devel</a></pre></blockquote><pre style='mso-margin-top-alt:0cm;margin-right:36.0pt;margin-bottom:5.0pt;margin-left:36.0pt'>Instructions to unsubscribe/change your settings at above page</pre><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>