неопределенная ссылка на `WinMain @ 16

0

Я пытаюсь установить openCV в Eclipse C++. Я установил Opencv и применил файлы paths и lib, но получаю

**** Rebuild of configuration Debug for project test ****

**** Internal Builder is used for build               ****
g++ -IC:\opencv\build\include -O0 -g3 -Wall -c -fmessage-length=0 -osrc\main.o    ..\src\main.cpp
g++ -LC:\opencv\build\x86\vc10\lib -LC:\opencv\build\x86\vc11\lib -otest.exe src\main.o -lopencv_core247 -lopencv_core247d -lopencv_highgui247 -lopencv_highgui247d -lopencv_imgproc247 -lopencv_imgproc247d
C:/MinGW/i686-pc-mingw32/lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text+0x3c): undefined reference to 'WinMain@16'
collect2.exe: error: ld returned 1 exit status
Build error occurred, build is stopped

Я знаю, что этот вопрос задавали раньше, но в каждом из них ответ был "забыв включить функцию main()". Но у меня есть функция main(), и я все еще получаю эту ошибку.

Вы знаете, что мне делать?

  • 2
    Как насчет размещения некоторого кода?
  • 3
    Пожалуйста, опубликуйте самый маленький файл main.cpp с той же ошибкой.
Показать ещё 1 комментарий
Теги:
opencv
eclipse-cdt

1 ответ

0

Возможно, компоновщик по умолчанию использует подсистему "Windows", а это означает, что главная точка входа не является "основным" символом, как вы ожидаете, а скорее "WinMain".

Вы можете указать подсистему своего приложения, передав следующий аргумент в вашей g++ командной строке:

-Wl,-subsystem,console

(FYI, для подсистемы "Windows" вы должны использовать -Wl,-subsystem,windows)

Вы также можете установить это в настройках проекта Eclipse в конфигурации компоновщика, где бы я ни думал.

В основном "консоль", как следует из названия, создает приложение на основе консоли, чья начальная точка входа по умолчанию является основной функцией, а другая создаст приложение графического интерфейса Windows, чья начальная точка входа по умолчанию - это функция WinMain.

Пожалуйста, попробуйте :)

  • 1
    Нет, обычная основная функция полностью подходит для подсистемы Windows. Любой компилятор / компоновщик, который не принимает обычную функцию main, не соответствует. Смотрите этот ответ .
  • 0
    @ Крис Вы на самом деле правы, только что сделали небольшой тест. Ну, сам MSVC был бы намного более строгим об этом, проклятый MS :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню