c ++ libnoise error для Perlin

я установил libnoise на windows с code :: blocks

и при компиляции выдает ошибку:

undefined reference to `noise::module::Perlin::Perlin()'
undefined reference to `noise::module::Perlin::GetValue(double, double, double) const'
undefined reference to `vtable for noise::module::Perlin'
undefined reference to `noise::module::Module::~Module()'

но ссылки в perlin.h заголовочный файл

Как я могу решить эту проблему?

0

Решение

В Windows libnoise поставляется с файлом * .def, который заботится об экспорте символов. Но когда я попытался скомпилировать библиотеку в 64-битной версии этим утром, оказалось, что этот механизм не работает.
Мне пришлось «вручную» экспортировать символы класса:

Шаги для экспорта символов libnoise:

. Определите переменную препроцессора LIBNOISE_EXPORT при компиляции библиотеки как общей библиотеки не добавляйте ее при компиляции проекта, который использования библиотека

. Добавьте несколько макросов экспорта в заголовок верхнего уровня библиотеки (например, basictypes.h):

#if defined(WIN32)
#   ifdef LIBNOISE_EXPORT
#       define LIBNOISE_DLL __declspec(dllexport)
#   else
#       define LIBNOISE_DLL __declspec(dllimport)
#   endif
#else
#   define LIBNOISE_DLL
#endif

. Добавьте макрос LIBNOISE_DLL перед определением класса:

class LIBNOISE_DLL Perlin: public Module
{
...

И это помогло мне

примечание: не используйте файл * .def в процессе компиляции, если вы попробуете это решение

0

Другие решения


По вопросам рекламы [email protected]