我有一个使用 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 I 上 cmake -G "Visual Studio 15 2017 Win64" ..
然后在 Visual Studio 中打开创建的“.sln”进行编译。构建成功,在所有三个操作系统上都没有错误。有没有人知道我需要做什么/改变才能让我的模块在 Windows 上工作?
完整模块位于此处:https://github.com/ryn1x/Graphics-TinyTIFF
最佳答案
我想你必须给 TINYTIFFREADER_LIB_EXPORT
和 TINYTIFFWRITER_LIB_EXPORT
定义一个值(在源代码中,但最好让它由构建系统传递)并且在 Windows 上我认为它必须是 __declspec(dllexport)
,否则符号可能无法在 dll 中使用。
关于visual-studio - Perl6 NativeCall 在 native 库中找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53840432/