Проблема
Используя MSYS / Mingw64 / g ++, я скомпилировал интерфейсную библиотеку NetCDF4 C ++.Я хочу использовать его в проекте Win_x64 Visual Studio 2017 (компилятор / компоновщик v141), но получаю ошибки компоновщика и не уверен, где.
Шаги и результаты
Загрузил следующее:
Встроенная в Windows библиотека NetCDF C: netcdf_c_libs
C ++ Библиотека интерфейса: netcdf-cxx4-4.3.0
Используя приведенный ниже сценарий bash, библиотека компилируется с помощью приведенного ниже сценария bash с make check
, возвращая PASS 7/8 & 1 FAIL в тестах (не связанная с этим проблема).
Цель
Для успешной сборки и запуска pres_temp_4D_wr.cpp в Visual Studio 2017.
Соответствующие вопросы и ответы
Чтотакое неопределенная ссылка / неразрешенная внешняя ошибка символа и как ее исправить?
Это слишком общая проблема.Эта проблема изолирована.
Код
#!/usr/bin/bash
# Return if command/pipeline returns error
set -e
export CC="gcc"
export CXX="g++"
### Linking netCDF C Library - netCDF4.6.3-NC4-DAP-64.exe
# Got test fails with CXXFLAGS: -mdll -O2
export CFLAGS="-I/c/lib/netCDF-4.6.3/include"
export CPPFLAGS="-I/c/lib/netCDF-4.6.3/include"
export CXXFLAGS="-I/c/lib/netCDF-4.6.3/include"
export LDFLAGS="-L/c/lib/netCDF-4.6.3/lib"
export NETCDF_DIR="/c/dev/netcdf-cxx4"
export BUILD_DIR="$NETCDF_DIR/build"
export RELEASE_DIR="/c/lib/netcdf-cxx-4.3.0"
echo $CC
echo $CXX
echo $CPPFLAGS
echo $CXXFLAGS
echo $LDFLAGS
echo $NETCDF_DIR
echo $BUILD_DIR
# Enter netcdf directory
cd $NETCDF_DIR
# Restting NC++ interface library. Using v4.3.0. https://github.com/Unidata/netcdf-cxx4
git reset --hard
git clean -fdx
## Not sure what this does...
# just following git readme instructions to do this prior to configure
autoreconf -if
mkdir -p $BUILD_DIR
cd $BUILD_DIR
#### Configure & Compile ####
# Someone said put this in?
# --host=x86_64-w64-mingw32
# --enable-shared
../configure --prefix=$RELEASE_DIR 2>&1 | tee configure-output.log
mingw32-make -j4 2>&1 | tee make-output.log && mingw32-make install 2>&1 | tee make-install-output.log
mingw32-make check 2>&1 | tee make-check-output.log
Visual Studio 2017 (v141) Параметры компоновщика:
/OUT:"C:\Users\Robbie\Projects\netcdf-data-analysis\cpp-tdms-streamer\build\TDMS_Streamer\Debug-x64\TDMS_Streamer.exe" /MANIFEST /NXCOMPAT /PDB:"C:\Users\Robbie\Projects\netcdf-data-analysis\cpp-tdms-streamer\build\TDMS_Streamer\Debug-x64\TDMS_Streamer.pdb" /DYNAMICBASE "szip.lib" "zlib.lib" "hdf5.lib" "hdf5_hl.lib" "hdf5_hl_cpp.lib" "netcdf.lib" "libnetcdf_c++4.a" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X64 /INCREMENTAL /PGD:"C:\Users\Robbie\Projects\netcdf-data-analysis\cpp-tdms-streamer\build\TDMS_Streamer\Debug-x64\TDMS_Streamer.pgd" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"C:\Users\Robbie\Projects\netcdf-data-analysis\cpp-tdms-streamer\build\TDMS_Streamer\intermediates\Debug-x64\TDMS_Streamer.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /VERBOSE:Lib /LIBPATH:"C:\Users\Robbie\Projects\netcdf-data-analysis\cpp-tdms-streamer\lib\HDF5-1.10.5-win64\lib" /LIBPATH:"C:\Users\Robbie\Projects\netcdf-data-analysis\cpp-tdms-streamer\lib\netCDF-4.6.3\lib" /LIBPATH:"C:\lib\netcdf-cxx-4.3.0\lib" /LIBPATH:"C:\Users\Robbie\Projects\netcdf-data-analysis\cpp-tdms-streamer\lib\tdms-recording-lib" /LIBPATH:"C:\lib\boost\boost_1_68_0\stage\lib" /TLBID:1
Ошибка компоновщика (1 из 13)
1>pres_temp_4D_wr.obj : error LNK2019: unresolved external symbol
"public: __cdecl netCDF::NcFile::NcFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,enum netCDF::NcFile::FileMode)" (??0NcFile@netCDF@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@W4FileMode@01@@Z)
referenced in function main