【问题标题】:Perl6 NativeCall cannot locate symbol in native libraryPerl6 NativeCall 在本机库中找不到符号
【发布时间】:2018-12-18 20:18:12
【问题描述】:

我有一个使用 NativeCall 的模块,它适用于 Linux 和 macOS,但不适用于 Windows。当我尝试在 Windows 上使用该模块时,会出现很多错误,例如:

# Cannot locate symbol 'TinyTIFFReader_open' in native library 'tinytiff.dll'

我使用 cmake 来实现对所有三个操作系统的 C++ 依赖。在 Linux 和 macOS 上我可以 cmake ..; make; sudo make install,在 Windows 上我 cmake -G "Visual Studio 15 2017 Win64" .. 然后在 Visual Studio 中打开创建的“.sln”进行编译。构建成功,在所有三个操作系统上都没有错误。

有没有人知道我需要做什么/改变才能让我的模块在 Windows 上运行?

完整模块位于此处:https://github.com/ryn1x/Graphics-TinyTIFF

【问题讨论】:

    标签: visual-studio cmake raku nativecall


    【解决方案1】:

    我认为你必须给 TINYTIFFREADER_LIB_EXPORTTINYTIFFWRITER_LIB_EXPORT 定义一个值(在源代码中,但最好让它由构建系统传递)并且在 Windows 上我认为它必须是 @987654323 @,否则符号可能无法在 dll 中使用。

    【讨论】:

    • 谢谢!调查您的建议也使我找到了不需要修改任何代码的解决方案。在 Windows 上,您只需 cmake -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -DBUILD_SHARED_LIBS=TRUE -G "Visual Studio 15 2017 Win64" ..
    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多