6

我有一个使用 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

4

1 回答 1

6

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

于 2018-12-19T15:36:30.510 回答