Неизвестный тип файла: basic_oarchive.o (boost и emscripten) - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь десериализовать файл в браузере (используя boost.serialization). Я скомпилировал boost с помощью emscripten, по-видимому, без проблем.

При компиляции (на самом деле, линковке) моей программы я получаю сообщение об ошибке

wasm-ld: error: unknown file type: basic_oarchive.o

Вот минимальный источник для воспроизведения проблемы

#include <iostream>
#include <fstream>
#include <boost/archive/binary_oarchive.hpp>
#include <emscripten/bind.h>

int main() {
  std::cout << "Run main" << std::endl;
  std::ofstream ofile("data.bin");
  boost::archive::binary_oarchive oTextArchive(ofile);
  return 0;
}

// Export the functions.
EMSCRIPTEN_BINDINGS(my_module) {
  emscripten::function("main", &main);
}

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project( josef )

set(CMAKE_VERBOSE_MAKEFILE ON)

set(BoostWasm_DIR "/home/laurent/libs/boost/build_wasm")

include_directories(${BoostWasm_DIR}/include)

add_executable(josef josef.cpp)

file(GLOB boost_js "${BoostWasm_DIR}/lib/*.a")
target_link_libraries( josef ${boost_js} )

Файл basic_oarchive.hpp находится в каталоге /home/laurent/boost/build_wasm/include/boost/archive, но я не нашел соответствующий файл .o.

Вопросы:

  • где basic_oarchive.o?
  • , почему emscripten пытается использовать файл .o вместо .a?
  • Как исправить проблема?

РЕДАКТИРОВАТЬ: Это, вероятно, та же проблема: https://github.com/emscripten-core/emscripten/issues/9721

...