visual-studio - Perl6 NativeCall 在 native 库中找不到符号

标签 visual-studio cmake raku nativecall

我有一个使用 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_EXPORTTINYTIFFWRITER_LIB_EXPORT定义一个值(在源代码中,但最好让它由构建系统传递)并且在 Windows 上我认为它必须是 __declspec(dllexport) ,否则符号可能无法在 dll 中使用。

关于visual-studio - Perl6 NativeCall 在 native 库中找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53840432/

相关文章:

c# - 在 Visual Studio 2010 中将一个 xml 文件注入(inject)另一个(合并两个 xml 文件)

sequence - 为什么 Perl 6 序列 'A' ... 'AA' 只有一个元素?

printing - Perl6 Terminal::Print 如何提示用户输入文本?

mysql - 加入两个子查询抛出错误

c++ - MSVC 编译器/arch :AVX2/fp:fast breaks C++ matrix inversion algorithm

c++ - 如何在 CLion IDE 的 CMake 文件中链接 gdal 共享库?

c++ - 带 CUDA 的 CMake : ccbin enclosed with unnecessary quotation marks (\")

cmake - 如何在 CMake 中使用 cpplint 代码样式检查?

regex - Perl 6中的递归正则表达式?

visual-studio - VSCT:不同VS版本的不同图标