Perl6 NativeCall не может найти символ в собственной библиотеке - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть модуль, использующий 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" .. и затем открыть созданный «.sln» в Visual Studio для компиляции.Сборка завершается без ошибок на всех трех ОС.

У кого-нибудь есть идеи о том, что мне нужно сделать / изменить, чтобы мой модуль работал в Windows?

Полный модульнаходится здесь: https://github.com/ryn1x/Graphics-TinyTIFF

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, вам придется дать TINYTIFFREADER_LIB_EXPORT, а TINYTIFFWRITER_LIB_EXPORT определяет значение (либо в источнике, но, вероятно, лучше, чтобы оно передавалось системой сборки), а в Windows я думаю, что оно должно быть __declspec(dllexport), иначе символы не могут быть доступны в dll.

...