我有一个使用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上正常工作有任何想法吗?
答案 0 :(得分:5)
我认为您必须给TINYTIFFREADER_LIB_EXPORT
和TINYTIFFWRITER_LIB_EXPORT
定义一个值(在源中,但最好由构建系统传递),在Windows上,我认为它具有为__declspec(dllexport)
,否则dll中的符号可能无法使用。