在MSYS和 MinGW下的Mongo-CXX构建问题

编程语言 2026-07-11

我在用MSYS和 MinGW64,通过cmake构建mongo-cxx,并且已经安装了mongo-c共享库(之前构建好)

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 -DCMAKE_PREFIX_PATH="C:/mongo-c" -DCMAKE_INSTALL_PREFIX="C:/mongo-cyy-driver"

我得到的函数定义被标记为dllimport,这是Mongo-CXX的问题,还是我做错了什么?

$ cmake --build . --config Release
[  2%] Generating libbsoncxx.pc
[  2%] Built target generate-libbsoncxx_shared-pc
[  2%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/private/itoa.cpp.obj
[  5%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/private/version.cpp.obj
[  5%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/array/element.cpp.obj
[  5%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/array/value.cpp.obj
[  5%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/array/view.cpp.obj
[  5%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/builder/core.cpp.obj
[  8%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/config/config.cpp.obj
[  8%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/config/export.cpp.obj
[  8%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/config/version.cpp.obj
[  8%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/decimal128.cpp.obj
[ 11%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/document/element.cpp.obj
[ 11%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/document/value.cpp.obj
[ 11%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/document/view.cpp.obj
[ 11%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/exception/error_code.cpp.obj
[ 14%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/exception/exception.cpp.obj
[ 14%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/json.cpp.obj
[ 14%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/oid.cpp.obj
[ 14%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/string/view_or_value.cpp.obj
[ 17%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/types.cpp.obj
[ 17%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/types/bson_value/value.cpp.obj
[ 17%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/types/bson_value/view.cpp.obj
[ 17%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/validate.cpp.obj
[ 20%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v_noabi/bsoncxx/vector.cpp.obj
[ 20%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v1/config/config.cpp.obj
[ 20%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v1/config/export.cpp.obj
[ 20%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v1/config/version.cpp.obj
[ 20%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v1/detail/postlude.cpp.obj
[ 22%] Building CXX object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/lib/bsoncxx/v1/detail/prelude.cpp.obj
[ 22%] Building RC object src/bsoncxx/CMakeFiles/bsoncxx_shared.dir/bsoncxx.rc.obj
[ 22%] Linking CXX shared library libbsoncxx.dll
[ 22%] Built target bsoncxx_shared
[ 22%] Generating libmongocxx.pc
[ 22%] Built target generate-libmongocxx_shared-pc
[ 25%] Building CXX object src/mongocxx/CMakeFiles/mongocxx_shared.dir/lib/mongocxx/private/bson.cpp.obj
[ 25%] Building CXX object src/mongocxx/CMakeFiles/mongocxx_shared.dir/lib/mongocxx/private/conversions.cpp.obj
[ 25%] Building CXX object src/mongocxx/CMakeFiles/mongocxx_shared.dir/lib/mongocxx/private/mongoc.cpp.obj
[ 25%] Building CXX object src/mongocxx/CMakeFiles/mongocxx_shared.dir/lib/mongocxx/private/numeric_casting.cpp.obj
[ 28%] Building CXX object src/mongocxx/CMakeFiles/mongocxx_shared.dir/lib/mongocxx/v_noabi/mongocxx/bulk_write.cpp.obj
In file included from C:/Users/iambarber/Desktop/mongo-cxx/src/mongocxx/include/mongocxx/v_noabi/mongocxx/hint.hpp:24,
                 from C:/Users/iambarber/Desktop/mongo-cxx/src/mongocxx/include/mongocxx/v_noabi/mongocxx/model/delete_many.hpp:22,
                 from C:/Users/iambarber/Desktop/mongo-cxx/src/mongocxx/include/mongocxx/v_noabi/mongocxx/model/write.hpp:23,
                 from C:/Users/iambarber/Desktop/mongo-cxx/src/mongocxx/include/mongocxx/v_noabi/mongocxx/bulk_write.hpp:21,
                 from C:\Users\iambarber\Desktop\mongo-cxx\src\mongocxx\lib\mongocxx\v_noabi\mongocxx\bulk_write.cpp:18:
C:/Users/iambarber/Desktop/mongo-cxx/src/bsoncxx/include/bsoncxx/v_noabi/bsoncxx/string/view_or_value.hpp:51:32: error: function 'bsoncxx::v
_noabi::string::view_or_value::view_or_value()' definition is marked dllimport
   51 |     BSONCXX_ABI_EXPORT_CDECL() view_or_value() = default;
      |                                ^~~~~~~~~~~~~
mingw32-make[2]: *** [src\mongocxx\CMakeFiles\mongocxx_shared.dir\build.make:139: src/mongocxx/CMakeFiles/mongocxx_shared.dir/lib/mongocxx/v_n
oabi/mongocxx/bulk_write.cpp.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:1046: src/mongocxx/CMakeFiles/mongocxx_shared.dir/all] Error 2
mingw32-make: *** [Makefile:135: all] Error 2

此致,敬礼

解决方案

Mongo-CXX的发行版本无法与MinGW一起构建。该问题已在 CXX-3180 address misc. mingw-w64 GCC compatibility issues #1512 中得到修复。

该修复尚未发布,目前仅在master分支可用。你可以试试。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章