Perl6 NativeCall 无法在本机库中找到符号
Perl6 NativeCall cannot locate symbol in native library
我有一个使用 NativeCall 的模块,它适用于 Linux 和 macOS,但不适用于 Windows。当我尝试在 Windows 上使用该模块时,我收到很多错误,例如:
# Cannot locate symbol 'TinyTIFFReader_open' in native library 'tinytiff.dll'
我对所有三个 OS 的 C++ 依赖使用 cmake。在 Linux 和 macOS 上,我可以 cmake ..; make; sudo make install
,在 Windows 上,我 cmake -G "Visual Studio 15 2017 Win64" ..
,然后在 Visual Studio 中打开创建的“.sln”编译。构建成功,所有三个 OS 都没有错误。
有没有人知道我需要 do/change 才能让我的模块在 Windows 上工作?
我想你必须给 TINYTIFFREADER_LIB_EXPORT
和 TINYTIFFWRITER_LIB_EXPORT
定义一个值(在源代码中,但最好让构建系统传递它)和 windows 我认为它必须是 __declspec(dllexport)
,否则符号可能无法在 dll 中使用。
我有一个使用 NativeCall 的模块,它适用于 Linux 和 macOS,但不适用于 Windows。当我尝试在 Windows 上使用该模块时,我收到很多错误,例如:
# Cannot locate symbol 'TinyTIFFReader_open' in native library 'tinytiff.dll'
我对所有三个 OS 的 C++ 依赖使用 cmake。在 Linux 和 macOS 上,我可以 cmake ..; make; sudo make install
,在 Windows 上,我 cmake -G "Visual Studio 15 2017 Win64" ..
,然后在 Visual Studio 中打开创建的“.sln”编译。构建成功,所有三个 OS 都没有错误。
有没有人知道我需要 do/change 才能让我的模块在 Windows 上工作?
我想你必须给 TINYTIFFREADER_LIB_EXPORT
和 TINYTIFFWRITER_LIB_EXPORT
定义一个值(在源代码中,但最好让构建系统传递它)和 windows 我认为它必须是 __declspec(dllexport)
,否则符号可能无法在 dll 中使用。