Как экспортировать символы из библиотеки ".bc" (то есть: суффикс .a из компоновщика архиватора emar) в javascript? - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть сборка C ++ от emscripten, в которой я создаю несколько библиотек ".a" в сборках с использованием утилиты emar.В паре библиотек у меня есть несколько объявлений

extern "C" {
   void funcToExportToJavascript(int arg) {
       ...
   }
}

.

Я "связываю" все объекты и libXXX.a в конечный модуль .wasm + .html +.js, используя emcc, а также передайте ему файл exports.txt, содержащий символы, которые я хочу экспортировать из библиотек.

emcc не находит «экспортированные символы» в библиотеках.Если я не экспортирую символы из библиотек, «link / optimize» будет успешным, и весь код C ++ получит все свои символы из библиотек, и все будет работать так, как ожидается.Все символы, «экспортированные» из «объектных» файлов, переданных в окончательную ссылку, содержащуюся в конечных отдельных объектных файлах, найдены.

Единственный выход для меня - извлечь все объектные модули из библиотек во временную область.и добавить потом добавить их в финальную ссылку индивидуально?Есть ли способ использовать «emcc» для создания библиотеки с экспортированными символами?

Приведет ли это к раздуванию кода, если в действительности используются только несколько символов в библиотеках, и они не все представлены как LLVM '.bc'битовый код?

1 Ответ

0 голосов
/ 18 ноября 2018

Ну, может быть, этот вопрос не является быстрым, поскольку я не исследовал все углы. Но у кого-то еще может быть такая же проблема.

НО это на самом деле работает!

НО моя ошибка была в том, что вы не можете указать более одного файла списка экспорта для emcc - по-видимому, только последний из указанных занимает. Он делает это тихо, без сообщений об ошибках и упоминаний в документах, что никто не может сделать это более одного раза.

После того как я объединил все экспорты в один файл, все заработало как надо.

...