Perl6 NativeCall无法在本机库中找到符号

时间:2018-12-18 20:18:12

标签: visual-studio cmake perl6 nativecall

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

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

我对所有三个操作系统的C ++依赖项都使用cmake。在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

1 个答案:

答案 0 :(得分:5)

我认为您必须给TINYTIFFREADER_LIB_EXPORTTINYTIFFWRITER_LIB_EXPORT定义一个值(在源中,但最好由构建系统传递),在Windows上,我认为它具有为__declspec(dllexport),否则dll中的符号可能无法使用。