0

У меня не работает в коде ShellExecute. Ничего не подчеркивается, но при компиляции выскакивают не дающие мне никакой информации ошибки в файле .obj введите сюда описание изображения Использовал этот код:

#include <windows.h>
...
ShellExecute(NULL, L"open", L"http://www.cyberforum.ru", NULL, NULL, SW_SHOW);

И различные его вариации, ошибки повторяются. Прошу помочь с решением или предложить альтернативные варианты, спасибо.

freim
  • 4,895
  • 1
    И до кучи, если используете wide символы, желательно строго определять функцию, не надеясь на автодетект, в вашем случае ShellExecuteW(..) – NewView Apr 22 '19 at 22:21

1 Answers1

4

Чтобы ShellExecute заработал, нужно в дополнение к windows.h подключить соответствующий заголовочный файл. Конкретно для ShellExecute это shellapi.h.

На будущее используйте простой алгоритм действий. Если функция WinAPI не находится, открываете гугл и вводите ее название, например, так. Прямо самой первой идет ссылка на Microsoft Docs. Открываете и прокручиваете вниз до конца, там находится раздел Requirements, где и указано все, что для данной функции требуется.

freim
  • 4,895
  • shellapi.h инклюдится в windows.h, в вопросе ошибка линкера – user7860670 Apr 22 '19 at 22:20
  • Ответ то правильный, доки смотреть надо :) и подключить Shell32.lib – NewView Apr 22 '19 at 22:23
  • Большое спасибо вам, NewView, ваше дополнение как и ответ выше помогло. Сам бы не догадался, нужно получше изучить эту тему с линкерами) – Федя Ратников Apr 22 '19 at 23:56
  • @NewView, странно, посмотрел у себя пару проектов где используется ShellExecute, нигде не подключается Shell32.lib. Ну может просмотрел чего, отвечал уже поздно ночью. – freim Apr 23 '19 at 07:41
  • @VTT, да, верно - shellapi.h у меня было указано в проекте, где было определено WIN32_LEAN_AND_MEAN. – freim Apr 23 '19 at 07:47