2012-04-27 3 views
1

Я пробовал две разные версии GCC (4.6 и 4.7) с несколькими конфигурациями, включаяНевозможно построить wxMSW-2.8.12 с использованием MinGW

make -f makefile.gcc USE_OPENGL=1 BUILD=debug SHARED=0 RUNTIME_LIBS=static UNICODE=1 
make -f makefile.gcc MONOLITHIC=1 BUILD=debug SHARED=0 UNICODE=1 
make -f makefile.gcc USE_OPENGL=1 BUILD=debug UNICODE=1 

Это ошибка

../../src/msw/thread.cpp:525: error: cast from 'void*' to 'THREAD_RETVAL' loses precision 
../../src/msw/thread.cpp: In member function 'wxThreadError wxThreadInternal::WaitForTerminate(wxCriticalSection&, void**, wxThread*)': 
../../src/msw/thread.cpp:845: error: cast from 'void*' to 'DWORD' loses precision 
../../src/msw/thread.cpp: In member function 'void wxThread::Exit(void*)': 
../../src/msw/thread.cpp:1165: error: cast from 'void*' to 'unsigned int' loses precision 

Моя платформа Windows 7 64-бит, но я не пытаюсь построить 64-битную библиотеку (не намеренно в любом случае)
Что я делаю неправильно?

+0

и вопрос ...? – hochl

+0

@hochl Вопрос в том, что я не делаю правильно, то есть что вызывает ошибку? – user841550

ответ

1

Ошибка при попытке создания wxWidgets с использованием MinGW-w64. В моем случае источником моих проблем было то, что у меня установлен Strawberry Perl 5.14.2.1 (64 бит) и не знал, что perl установил gcc-компилятор, который был на пути.

2

DWORD - это 32-битное значение, а в 64-битной архитектуре указатель - это 64-битное значение. В коде должен использоваться DWORD_PTR, который получает значение 64 бит на x86_64 и 32 бит на x86. Возможно, вы должны просто создать это как 32-битное приложение и не пытаться его создать как родное 64-битное приложение.

+0

Я, конечно, пытаюсь построить 32-битную библиотеку, но ваше наблюдение, похоже, несколько согласуется с другими отчетами, которые я видел при исследовании этой ошибки. Пользователи сталкиваются с этим при попытке использовать MinGW-w64, но моя версия явно 32-битная – user841550

Смежные вопросы