Встраивание Dart VM (libdart_jit.a) в MacOS приводит к появлению «dyld: Symbol not found: __ZN4dart13FLAG_profilerE» - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь сделать свое первое приложение на C ++ со встроенной Dart VM. У меня проблема с минимальной настройкой компилятора на моем MacOS 10.14.6. Моя сборка прошла успешно, но когда я запускаю приложение, оно вылетает с:

$ clang++ -I ${HOME}/opt/dart-sdk --define-macro DART_SHARED_LIB=1 -L ./libs/debug -ldart_jit -lm -lz -O2 -undefined dynamic_lookup -o reproduce *.cpp
$ ./reproduce
dyld: Symbol not found: __ZN4dart13FLAG_profilerE

Хотя символ __ZN4dart13FLAG_profilerE присутствует внутри двоичного файла

$ nm reproduce | grep __ZN4dart13FLAG_profilerE
                 U __ZN4dart13FLAG_profilerE

Как правильно скомпилировать / связать это?

Моя программа воспроизведения:

#include <iostream>

#include <include/dart_api.h>

int main(int argc, const char * argv[]) {

    char* setVMFlagsError = Dart_SetVMFlags(argc, argv);
    if (setVMFlagsError != nullptr) {
        std::cerr << "Error while set Dart VM flags: " << setVMFlagsError << "\n";
        ::free(setVMFlagsError);
        return 1;
    } else {

        Dart_InitializeParams params = {};

        std::cout << "Hello, World!\n";
        return 0;
    }
}

Dart SDK был создан в соответствии с официальной документацией

(dart-sdk-pyenv)  ~/tmp/dart-sdk/sdk $ ./tools/build.py --mode all --arch x64 create_sdk
(dart-sdk-pyenv)  ~/tmp/dart-sdk/sdk $ cp -a ~/tmp/dart-sdk/sdk/xcodebuild/DebugX64/dart-sdk ~/opt/
...