Почему Visual Studio не может найти мою основную функцию после добавления файла hlsl / fx?

#c #winapi #directx

#c #winapi #directx

Вопрос:

Sidenode: я никого не прошу помочь мне с руководством по directx. Я думаю, что эта ошибка является обычной ошибкой API win32 Visual Studio.

Привет, ребята и девушки, я пытаюсь изучить DirectX 11 для развлечения, и я нашел эти примеры directx11 на github. Теперь я пытаюсь понять каждую функцию и посмотреть, как все работает вместе. Я создал новый проект VS, просто чтобы поиграть с материалом. Я скопировал и вставил весь код в Tutorial02.cpp в моем собственном проекте я создал новый фильтр под названием «Шейдеры» и изменил свойства моего решения VS. На данный момент у меня нет никаких проблем с компиляцией моего кода. Как только я добавляю Tutorial02.fx, Tutorial02_VS.hlsl и Tutorial02_PS.hlsl в решение, VS не может скомпилироваться и выдает следующий код ошибки:

 X3501   'main': entrypoint not found    Project00   C:UsersMeowDesktopdirectx-testsProject00Project00Project00FXC   1   
  

Ссылка на Github (directx11 tutorial main file):https://github.com/walbourn/directx-sdk-samples/blob/master/Direct3D11Tutorials/Tutorial02/Tutorial02.cpp

Что я сделал:

  1. Я создал новый проект VS с именем Project00 в папке directx-tests
  2. Я создал новый файл с именем Source.cpp
  3. Я скопировал-вставил все из Tutorial02.ccp (github) в свой Source.cpp
  4. Я добавил файл resource.h в свой проект
  5. Я добавил в раздел «Project00 -> Свойства -> Компоновщик -> Ввод» те же библиотеки, что и в руководстве
 d3d11.lib
d3dcompiler.lib
dxguid.lib
winmm.lib
comctl32.lib
  
  1. Я изменил в разделе «Свойства -> Ссылка -> Система» подсистему на Windows (:SUBSYSTEM / WINDOWS)
  2. Я скопировал и вставил файлы .hlsl и .fx в каталог моего проекта (еще не добавил его в решение VS) В этот момент он работает просто отлично. Он компилируется без проблем.

Но когда я добавляю Tutorial02.fx, Tutorial02_VS.hlsl и Tutorial02_PS.hlsl в мой шейдерный фильтр или любой другой фильтр и перекомпилирую, visual Studio сообщает мне: ‘main’: точка входа не найдена — как только я снова удаляю (не удаляю) файлы, все работает просто отлично.

Кто-нибудь знает почему?

(В учебном решении они также добавляют эти файлы в решение, и оно работает просто отлично)

Комментарии:

1. Вы не хотите создавать .fx . Он просто используется как включаемый. Вероятно, следует переименовать его .fxh в этом руководстве, чтобы избежать этой боли.

Ответ №1:

С помощью демонстрации на github я могу воспроизвести эту проблему. Вы можете обратиться к скриншотам ниже, чтобы изменить:

Свойства Tutorial02.fx:

введите описание изображения здесь

Свойства Tutorial02_PS.hlsl:

введите описание изображения здесь

Свойства Tutorial02_VS.hlsl:

введите описание изображения здесь

Вы также можете обратиться к страницам свойств HLSL, чтобы узнать, как создаются отдельные файлы шейдеров HLSL.