Аддон NAPI, выбрасывающий "неопределенный символ: omp_get_max_threads" из файла .node - PullRequest
0 голосов
/ 07 мая 2020

Это похоже на странную ошибку. Я пробовал отлаживать нативный код построчно, и эта ошибка, похоже, возникла из ниоткуда, как в конце вызова функции. Кажется, это вызвано определенными частями кода в собственной библиотеке, которую я использую, потому что, если я удалю некоторые вызовы функций, эта ошибка, похоже, исчезнет.

версия узла: 12.16.3 версия node-gyp: 6.1.0

Кстати, я использую nvm. Если это поможет.

После поиска в Google omp_get_max_threads я попытался добавить -fopenmp к флагам компилятора в файле binding.gyp, например,

{
    "targets": [{
        "target_name": "custom_addon",
        "cflags!": [ "-fno-exceptions" ],
        "cflags_cc!": [ "-fno-exceptions" ],
        "cflags": ["-fopenmp"],
        "cflags_cc": ["-fopenmp"],
        "sources": [
            "custom_addon.cpp"
        ],
        'include_dirs': [
            "<!@(node -p \"require('node-addon-api').include\")",
            "${workspaceRoot}"
        ],
        'libraries': [],
        'dependencies': [
            "<!(node -p \"require('node-addon-api').gyp\")"
        ]
    }]
}

Тем не менее, проблема не исчезла. Кстати, я использую пакет node-addon-api, а не напрямую n-api.

1 Ответ

0 голосов
/ 07 мая 2020

Ургх ..

Сразу после публикации этого сообщения я обнаружил, что вам нужно явно добавить libgomp в binding.gyp.

{
    "targets": [{
        "target_name": "custom_addon",
        "cflags!": [ "-fno-exceptions" ],
        "cflags_cc!": [ "-fno-exceptions" ],
        "cflags": ["-fopenmp"],
        "cflags_cc": ["-fopenmp"],
        "sources": [
            "custom_addon.cpp"
        ],
        'include_dirs': [
            "<!@(node -p \"require('node-addon-api').include\")",
            "${workspaceRoot}"
        ],
        'libraries': ["/usr/lib/x86_64-linux-gnu/libgomp.so.1"],
        'dependencies': [
            "<!(node -p \"require('node-addon-api').gyp\")"
        ]
    }]
}
...