Проблема с моим собственным аддоном C ++ в Electron на Mac

Я пишу код для загрузки динамической библиотеки С ++ из электроники. При попытке на Mac я получаю следующую ошибку:

dyld: Символ не найден: __ZN15FcDrive2Library13InitDrive2LibEv Ссылка на: /Users/nikhell/Documents/Codelathe/Workspace/cl-fc-client/electron-drive-client/build/Release/electronToCppBridge.node Ожидается в: flat.

Мой файл binding.gyp выглядит так:

{
    "targets":[
    {
        "target_name": "electronToCppBridge",
        "cflags!": [ "-fno-exceptions" ],
        "cflags_cc!": [ "-fno-exceptions" ],
        'include_dirs': [
            "<!@(node -p \"require('node-addon-api').include\")"
        ],
        'dependencies': [
            "<!(node -p \"require('node-addon-api').gyp\")"
        ],
        'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ],
        "copies":[
        {
            'destination': './node_modules/electron/dist',
            'files':[
                '../../cl-fc-client/release/support/common/clientca.pem',
                '../../cl-fc-client/release/support/common/clientcert.pem',
                '../../cl-fc-client/clouddrive2/config.xml',
                '../../cl-fc-client/release/support/prebuilt/translationsdc.zip'
            ]
        },
        {                        
            'destination': './src',
            'files':['../cloudDrive2Lib/LibraryEntry/cloudDrive2Library.h']
        }
        ],
        "conditions":[
            ["OS=='win'", 
            {
                "copies":[
                { 
                    'destination': './build/Release',
                    'files':[
                        '../../cl-fc-client-thirdparty/bugtrap/BugTrapU-x64.dll',
                        '../build/bin/msvc/Release64/cloudDrive2Lib.dll',
                        '../../cl-fc-client-thirdparty/openssl/1.0.2j/lib/x86_64-win32/ssleay32MD.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoZip64.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoXML64.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoUtil64.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoNetSSL64.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoNet64.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoJSON64.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoFoundation64.dll',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/bin64/PocoCrypto64.dll',
                        '../../cl-fc-client-thirdparty/openssl/1.0.2j/lib/x86_64-win32/libeay32MD.dll'
                    ]
                },
                {                        
                    'destination': './libs',
                    'files':['../build/bin/msvc/Release64/cloudDrive2Lib.lib']
                },
                ],
                "sources": [
                    "src/electronToCppBridge.cc",
                ],
            }
            ],
            ["OS=='mac'",
            {
                "copies":[
                {
                    'destination': './build/Release',
                    'files':[
                        '../build/bin/darwin/release/libfileclouddrive2lib.dylib',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/lib/Darwin/x86_64/libPocoCrypto.45.dylib',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/lib/Darwin/x86_64/libPocoFoundation.45.dylib',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/lib/Darwin/x86_64/libPocoJSON.45.dylib',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/lib/Darwin/x86_64/libPocoNet.45.dylib',
                        '../../cl-fc-client-thirdparty/poco/1.7.5/lib/Darwin/x86_64/libPocoNetSSL.45.dylib'
                    ]
                },
                {
                    'destination': './libs',
                    'files':[
                        '../build/bin/darwin/release/libfileclouddrive2lib.dylib'
                    ]
                },
                ],
                "sources": [
                    "src/electronToCppBridge.cc",
                    "libs/libfileclouddrive2lib.dylib",
                ],                    
            }
            ]            
        ],
    }       
    ]
}

Его работа в окнах. В Mac я попытался переустановить модули узлов и также перестроить электронику. Ни один из них мне не подходит. Этот dylib успешно копируется, помимо собственного модуля .node. Не знаю, почему появляется эта ошибка ссылки


person Nikhil    schedule 18.07.2019    source источник


Ответы (1)


Не бери в голову. Я понял, что тег link_dependencies нужно добавить в binding.gyp. Также необходимо скопировать дилиб в корень проекта.

person Nikhil    schedule 21.07.2019