Ошибка компиляции DCMTK из источника в MinGW-w64 G CC -8.1.0 «Ошибка:« FlsAllo c »не был объявлен в этой области» - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь скомпилировать DCMTK из источника через MinGW32-w64 и Cmake.

Я получаю эти ошибки после mingw32-make команды:

In file included from C:/dcmtk/oflog/include/dcmtk/oflog/internal/internal.h:59,
                 from C:\Users\Rodrigo\Downloads\tmp_dcmtk\dcmtk\oflog\libsrc\oflog.cc:35:
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h: In function 'dcmtk::log4cplus::thread::impl::tls_key_type dcmtk::log4cplus::thread::impl::tls_init(PFLS_CALLBACK_FUNCTION)':
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:127:12: error: 'FlsAlloc' was not declared in this scope
     return FlsAlloc(cleanupfunc);
            ^~~~~~~~
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:127:12: note: suggested alternative: 'TlsAlloc'
     return FlsAlloc(cleanupfunc);
            ^~~~~~~~
            TlsAlloc
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h: In function 'void* dcmtk::log4cplus::thread::impl::tls_get_value(dcmtk::log4cplus::thread::impl::tls_key_type)':
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:137:12: error: 'FlsGetValue' was not declared in this scope
     return FlsGetValue(k);
            ^~~~~~~~~~~
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:137:12: note: suggested alternative: 'TlsGetValue'
     return FlsGetValue(k);
            ^~~~~~~~~~~
            TlsGetValue
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h: In function 'void dcmtk::log4cplus::thread::impl::tls_set_value(dcmtk::log4cplus::thread::impl::tls_key_type, dcmtk::log4cplus::thread::impl::tls_value_type)':
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:148:5: error: 'FlsSetValue' was not declared in this scope
     FlsSetValue(k, value);
     ^~~~~~~~~~~
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:148:5: note: suggested alternative: 'TlsSetValue'
     FlsSetValue(k, value);
     ^~~~~~~~~~~
     TlsSetValue
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h: In function 'void dcmtk::log4cplus::thread::impl::tls_cleanup(dcmtk::log4cplus::thread::impl::tls_key_type)':
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:159:5: error: 'FlsFree' was not declared in this scope
     FlsFree(k);
     ^~~~~~~
C:/dcmtk/oflog/include/dcmtk/oflog/thread/impl/tls.h:159:5: note: suggested alternative: 'TlsFree'
     FlsFree(k);
     ^~~~~~~
     TlsFree
mingw32-make[2]: *** [oflog\libsrc\CMakeFiles\oflog.dir\build.make:80: oflog/libsrc/CMakeFiles/oflog.dir/oflog.cc.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:2533: oflog/libsrc/CMakeFiles/oflog.dir/all] Error 2
mingw32-make: *** [Makefile:157: all] Error 2

Я нашел эту ссылку с похожей ошибкой, однако решения не были предоставлены.

Кто-нибудь знает, как решить эту проблему?

Система:

  • Windows 10 x64
  • MinGW-W64 G CC -8.1. 0
  • G cc (i686-posix-dwarf-rev0, построено по проекту MinGW-W64) 8.1.0

1 Ответ

0 голосов
/ 09 апреля 2020

Заголовки MinGW не делают все функции Win32 API видимыми по умолчанию. Добавьте строку вроде add_compile_definitions (_WIN32_WINNT=0x600) в CMakeLists.txt файл, чтобы сделать Vista и более поздние API видимыми. Это должно исправить вашу компиляцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...