To Phil, Pedro, and Arjen:

@Phil and Pedro:
You guys are the ones with experience
with MSVC and wxwidgets here.  So are you willing to help
Arjen with the linking problem below?  Or recommend
the version of wxwidgets that works for you in combination
with MSVC?

@Arjen:

Glad you solved the find issue.  Please commit your fix
to cmake/modules/FindwxWidgets.cmake

Below I suggest a few things to check concerning the msvc/wxwidgets
linking problem you have encountered.

On 2017-07-05 12:28-0000 Arjen Markus wrote:


However, the make step failed:

           cd D:\plplot-svn\build-windows-alt

[ 20%] Linking CXX shared library ..\..\dll\plplotwxwidgets.dll

           cd D:\plplot-svn\build-windows-alt\bindings\wxwidgets

           D:\cmake3.8.0\bin\cmake.exe -E vs_link_dll 
--intdir=CMakeFiles\plplotwxwidgets.dir --manifests  -- 
C:\PROGRA~2\MICROS~3.0\VC\bin\amd64\link.exe /nologo 
@CMakeFiles\plplotwxwidgets.dir\objects1.rsp 
@C:\Users\markus\AppData\Local\Temp\nm4431.tmp

Visual Studio Incremental Link with embedded manifests

Create CMakeFiles\plplotwxwidgets.dir/manifest.rc

RC Pass 1:

C:/Program Files (x86)/Windows Kits/8.1/bin/x64/rc.exe 
/foCMakeFiles\plplotwxwidgets.dir/manifest.res 
CMakeFiles\plplotwxwidgets.dir/manifest.rc

LINK Pass 1:

C:\PROGRA~2\MICROS~3.0\VC\bin\amd64\link.exe /nologo 
@CMakeFiles\plplotwxwidgets.dir\objects1.rsp /out:..\..\dll\plplotwxwidgets.dll 
/implib:..\..\dll\plplotwxwidgets.lib 
/pdb:D:\plplot-svn\build-windows-alt\dll\plplotwxwidgets.pdb /dll /version:1.2 
/machine:x64 /debug /INCREMENTAL ..\..\dll\plplotcxx.lib 
D:\wxwidgets\lib\vc120_dll\wxbase30ud.lib 
D:\wxwidgets\lib\vc120_dll\wxmsw30ud_core.lib 
D:\wxwidgets\lib\vc120_dll\wxpngd.lib D:\wxwidgets\lib\vc120_dll\wxtiffd.lib 
D:\wxwidgets\lib\vc120_dll\wxjpegd.lib D:\wxwidgets\lib\vc120_dll\wxzlibd.lib 
D:\wxwidgets\lib\vc120_dll\wxregexud.lib 
D:\wxwidgets\lib\vc120_dll\wxexpatd.lib winmm.lib comctl32.lib oleacc.lib 
rpcrt4.lib shlwapi.lib version.lib wsock32.lib ..\..\dll\plplot.lib 
..\..\dll\csirocsa.lib ..\..\dll\qsastime.lib kernel32.lib user32.lib gdi32.lib 
winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib 
advapi32.lib /MANIFEST 
/MANIFESTFILE:CMakeFiles\plplotwxwidgets.dir/intermediate.manifest 
CMakeFiles\plplotwxwidg
ets.dir/manifest.res

  Creating library ..\..\dll\plplotwxwidgets.lib and object 
..\..\dll\plplotwxwidgets.exp

wxPLplotstream.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) 
public: __cdecl wxString::~wxString(void)" (__imp_??1wxString@@QEAA@XZ) referenced in function 
"public: void * __cdecl wxString::`vector deleting destructor'(unsigned int)" 
(??_EwxString@@QEAAPEAXI@Z)

wxPLplotstream.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) 
public: __cdecl wxSize::wxSize(int,int)" (__imp_??0wxSize@@QEAA@HH@Z) referenced in function 
"public: void __cdecl wxPLplotstream::SetSize(int,int)" 
(?SetSize@wxPLplotstream@@QEAAXHH@Z)

..\..\dll\plplotwxwidgets.dll : fatal error LNK1120: 2 unresolved externals

LINK Pass 1 failed. with 1120

NMAKE : fatal error U1077: 'D:\cmake3.8.0\bin\cmake.exe' : return code 
'0xffffffff'

Stop.

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 
12.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'

Stop.

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 
12.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'

Stop.

As far as I can tell, all the wxWidgets libraries are present, but I admit I 
did not make a thorough investigation into this.

I did a google search for the terms <msvc wxwidgets unresolved
external symbol __declspec(dllimport) public: __cdecl
wxSize::wxSize(int,int)> (related to the second linking error message above)
and found
<https://stackoverflow.com/questions/42036606/wxwidgets-visual-studio-2015-link-errors>
where it indicates that such linking errors generally occur if the preprocessor 
macro WXUSINGDLL
is not #defined when shared libraries are used.

Apparently cmake/modules/FindwxWidgets.cmake does set this macro in
certain circumstances, but I wonder if those have actually occurred
in your case.  To find out, please look at your cmake output.  Does
the line

-- wxWidgets_DEFINITIONS  <list of definitions>

include WXUSINGDLL in the list?

Assuming so, does "nmake VERBOSE=1" confirm that
-DWXUSINGDLL is being used in your compilations of wxwidgets-related
code?

I expect you will find no problems with WXUSINGDLL (since you had
visibility issues with just a few symbols and not all of them), but you should
double-check as above simply as part of your "due diligence".  But
ultimately the answer may be to use a different wxwidgets
installation, see my question to Phil and Pedro above.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to