首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的原生C++插件在Mac的电子中出现问题

我的原生C++插件在Mac的电子中出现问题
EN

Stack Overflow用户
提问于 2019-07-19 03:20:44
回答 1查看 433关注 0票数 0

我正在写代码从电子加载c++动态库。在Mac中尝试时,我得到以下错误:

dyld:找不到符号:引用自: /Users/nikhell/Documents/Codelathe/Workspace/cl-fc-client/electron-drive-client/build/Release/electronToCppBridge.node的__ZN15FcDrive2Library13InitDrive2LibEv应在:平面命名空间中

我的binding.gyp文件如下所示:

代码语言:javascript
运行
复制
{
    "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",
                ],                    
            }
            ]            
        ],
    }       
    ]
}

它可以在windows下工作。在Mac上,我也尝试过重新安装节点模块和电子重建。他们都不适合我。除了原生.node模块之外,dylib也被成功复制。不知道为什么会出现此链接错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-21 17:14:38

不要紧。我意识到需要在binding.gyp中添加link_dependencies标记。另外,需要在项目的根目录复制dylib。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57101378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档