Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 51, средняя оценка - 4.98
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
#1

Directx10 ошибка подключения d3dx10.lib - Visual C++

19.01.2010, 20:22. Просмотров 6686. Ответов 23
Метки нет (Все метки)

Здравствуйте! Возникла такая проблема, при подключении d3dx10.lib выскакивает ошибка:
1>LINK : fatal error LNK1104: не удается открыть файл ''d3dx10.lib''
Вот код подключения:
C++
1
2
3
4
5
#include <d3d10.h>
#include <d3dx10.h>
 
#pragma comment(lib,"d3d10.lib")
#pragma comment(lib,"d3dx10.lib")
В самом Visual C++ я в Параметры - Проекты и решения - Каталоги VC++ добавил все необходимые ссылки на *.h и *.lib файлы.

Добавлено через 1 час 1 минуту
C++
1
2
3
4
5
#include <C:\Program Files (x86)\Microsoft DirectX SDK (August 2009)\include\d3d10.h>
#include <C:\Program Files (x86)\Microsoft DirectX SDK (August 2009)\include\d3dx10.h>
 
#pragma comment(lib,"C:\\Program Files (x86)\\Microsoft DirectX SDK (August 2009)\\Lib\\x64\\d3d10.lib")
#pragma comment(lib,"C:\\Program Files (x86)\\Microsoft DirectX SDK (August 2009)\\Lib\\x64\\d3dx10d.lib")
Пропала проблема подключения lib файла но возникла новая проблема

1>winmain.obj : error LNK2019: ссылка на неразрешенный внешний символ _D3DX10CreateFontW@48 в функции "long __cdecl InitDirect3D10(void)" (?InitDirect3D10@@YAJXZ)
1>winmain.obj : error LNK2019: ссылка на неразрешенный внешний символ _D3D10CreateDeviceAndSwapChain@32 в функции "long __cdecl InitDirect3D10(void)" (?InitDirect3D10@@YAJXZ)
От этого я избавился когда поменял в pragma comment изменил ссылку с 64 bit на 32 bit либы, общий результат получился такой:
C++
1
2
3
4
5
#include <C:\Program Files (x86)\Microsoft DirectX SDK (August 2009)\include\d3d10.h>
#include <C:\Program Files (x86)\Microsoft DirectX SDK (August 2009)\include\d3dx10.h>
 
#pragma comment(lib,"C:\\Program Files (x86)\\Microsoft DirectX SDK (August 2009)\\Lib\\x86\\d3d10.lib")
#pragma comment(lib,"C:\\Program Files (x86)\\Microsoft DirectX SDK (August 2009)\\Lib\\x86\\d3dx10d.lib")
Вопрос в следующем почему приходиться прописывать полный путь хотя я пути к исходникам указал уже? И почему 64 битный либы не работают?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 20:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Directx10 ошибка подключения d3dx10.lib (Visual C++):

За что отвечает d3d9.lib и d3dx9.lib? - Visual C++
В чём разница?

В каком SDK находятся библиотечные файлы Urlmon.lib winmm.lib - C++
В каком SDK находятся библиотечные файлы Urlmon.lib winmm.lib? Я предполагал что в Direct SDK(у меня DirectX SDK 2006), однако там не...

Ошибка при работе с mpi.lib - Visual C++
Здравствуйте, хочу реализовать простейшую программу вывода текста &quot;HelloWorld&quot;, используя технологию параллельного программирования. В...

Как изучить DirectX10/11? - Visual C++
Ээээ... Собственно, в этом и весь вопрос. Если изучили его вы, то как вы это сделали? У меня есть учебник по DirectX10, но он оставляет...

Ошибка nafxcw.lib(afxglobals.obj) : error LNK2005 - Visual C++
Доброго времени суток, Проект был выполнен на Visual Studio C++ 6 на Windows95. Мне было поручено переделать его таким образом, что бы...

Класс string - ошибка подключения - Visual C++
Народ, помогите советом, плиз! Пишу лабу на Borland c++ 3.1, в ней надо использовать стандартный класс string, но когда я его подключаю,...

23
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
20.01.2010, 13:55 #2
Цитата Сообщение от mibin Посмотреть сообщение
Здравствуйте! Возникла такая проблема, при подключении d3dx10.lib выскакивает ошибка:

Вот код подключения:
C++
1
2
3
4
5
#include <d3d10.h>
#include <d3dx10.h>
 
#pragma comment(lib,"d3d10.lib")
#pragma comment(lib,"d3dx10.lib")
В самом Visual C++ я в Параметры - Проекты и решения - Каталоги VC++ добавил все необходимые ссылки на *.h и *.lib файлы.

Добавлено через 1 час 1 минуту
C++
1
2
3
4
5
#include <C:\Program Files (x86)\Microsoft DirectX SDK (August 2009)\include\d3d10.h>
#include <C:\Program Files (x86)\Microsoft DirectX SDK (August 2009)\include\d3dx10.h>
 
#pragma comment(lib,"C:\\Program Files (x86)\\Microsoft DirectX SDK (August 2009)\\Lib\\x64\\d3d10.lib")
#pragma comment(lib,"C:\\Program Files (x86)\\Microsoft DirectX SDK (August 2009)\\Lib\\x64\\d3dx10d.lib")
Как то странно. Указывать полные пути смысла нет, как раз ради этого и делалось чтобы можно было укзать пути к подключаемым файлам.
Когда я подключал директХ (9ый но думаю без разницы) я указал пути только к x86 папке.
Подключено так
C++
1
2
3
// Библиотеки DirectX
#pragma comment (lib, "d3dx9.lib")
#pragma comment (lib, "d3d9.lib")
Уже ниже этого идут includ'ы
C++
1
2
3
4
5
// DirectX
#include <d3dx9core.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <d3dx9tex.h>
Помнится у меня был случай когда я прописал папку lib там где должны быть заголовки h и наоборот)) Всякое бывает)
убедитесь что в winmain.cpp все нужное инклюдится (мб и #pragma comment. не знаю, у меня просто один stdafx.h который во все cpp влезает), ошибки линковки явно из за этого.
Интересно что ж такое...

Добавлено через 4 минуты
К тому же примеры SDK уже рабочие по идее. Так что вы всегда можете проследить логику подключения оттуда. Если и там ошибки - значит дело все таки не в коде, нужно будет думать.
1
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
20.01.2010, 22:15  [ТС] #3
Наконец-то хоть кто-то заинтересовался проблемой, СПАСИБО Вам большое! И так...
Помнится у меня был случай когда я прописал папку lib там где должны быть заголовки h и наоборот)) Всякое бывает)
убедитесь что в winmain.cpp все нужное инклюдится (мб и #pragma comment. не знаю, у меня просто один stdafx.h который во все cpp влезает), ошибки линковки явно из за этого.
На счет этого получается так, первоначально я действительно ошибся с подключением, но позже перенастроил папки и все стало правильно, но изменения в работе никакого не последовало. Дело в том, что не подключаются не только lib файлы но и h тоже, корень проблемы не ясен, приходиться указывать полные пути...у меня подозрение что он просто игнорирует ссылки на необходимые папки. Вот и загадка получается.
Ниже в файла я показал подключения. Поднимал пути и вверх и вниз (не знаю откуда он начинает читать их, сверху вниз или снизу вверх) и результата никакого.

Кстати о птичках, не все файлы необходимо так подключать, вот файл d3d10.lib подключается нормально без этого...предполагаю что он еще где-то храниться кроме этого пути, просто такая же фигня была с d3d10.h но он в том месте кастрированный какой-то оказался, так что то что нужно не отрабатывало. Как только указал полный путь в необходимую папку все стало норм...мистика...
1
Миниатюры
Directx10 ошибка подключения d3dx10.lib   Directx10 ошибка подключения d3dx10.lib  
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
20.01.2010, 22:20 #4
lib не в исполняемых файлах вроде, у меня в файлах библиотек. Не знаю как надо, но так уже давно и проблем не было никогда)
1
Миниатюры
Directx10 ошибка подключения d3dx10.lib  
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
20.01.2010, 22:29 #5
Хм, к тому же, если добавить все нужные DLL в папку с приложением я думаю пути прописывать не нужно будет. Я так одну библиотеку подключал, но не уверен... давно было
1
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
21.01.2010, 01:01  [ТС] #6
А смотри в чем фигня, видишь там на фотке все пути указывают в папки под названием inlude вот в чем фокус, поэтому я сначала и указал пути не верно потому что считал что h это исполняемые файлы, а оказались включаемые (смотри вторую фотку)
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
21.01.2010, 01:36 #7
Эээ...? На скринах ты прописал 2 разных пути. Первый неверно. Второй правильно.
Всего надо прописать 2 пути а не какой либо 1.

Первый путь который надо прописать - "\%DIRECTX_SDK%\Lib\x64" ИЛИ "\%DIRECTX_SDK%\Lib\x86". Вот его ты прописал как я понимаю не верно. Посмотри как я его подключил на скрине.

Второй путь - "\%DIRECTX_SDK%\Include". На втором твоём скрине видно верный вариант подключения. у меня так же и все ОК

Я говорю про то что если при верном подключении проблема не решилась, то вопрос либо не в правильном инклюде (везде где юзается DX нужно прописать его инклюды и возможно pragma comment lib). В принципе я подключать особо то не профи, просто у меня эта система уже давно налажена и я показываю как. =) надеюсь все получится, а если нет остается только думать не бажный ли дистибутив. Странно было бы...
1
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
21.01.2010, 11:18  [ТС] #8
Эээ...? На скринах ты прописал 2 разных пути. Первый неверно. Второй правильно.
Всего надо прописать 2 пути а не какой либо 1.

Первый путь который надо прописать - "\%DIRECTX_SDK%\Lib\x64" ИЛИ "\%DIRECTX_SDK%\Lib\x86". Вот его ты прописал как я понимаю не верно. Посмотри как я его подключил на скрине.

Второй путь - "\%DIRECTX_SDK%\Include". На втором твоём скрине видно верный вариант подключения. у меня так же и все ОК
БЛИН! Точно...чего-то я конкретно ступил сейчас проверю...блин...ладно свалю это на кризис и сессию ))))

Добавлено через 2 минуты
ХА! Работает...вот жешь блин Спасибо огромное даже стыдно блин, так лохануться

Добавлено через 5 минут
А ты, кстати, давно занимаешься программирование на DirectX? Или просто когда-то занимался и кинул эту затею?
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
21.01.2010, 18:03 #9
Да ладно, всяко бывает. Самые суровые баги у меня кстати тоже были от невнимательности, когда пологаешь что уже все верно написал и даже не смотришь туда))
Насчет программирования с DirectX - занимаюсь и сейчас, потихоньку. Сессия и все такое) Жаль начал с DirecX9 сейчас наверное уже там больше фишек в 10ке) но уже поздно переходить.
К сожалению спецом назвать себя не могу, всего лишь та часть DirectX что рулит спрайтами знакома мне более или менее) Однако на форуме есть специальный раздел для программирования графики, хотя выглядит он вяло) Интересно было бы оживить его, но пока что не до этого...
1
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
21.01.2010, 19:18  [ТС] #10
Цитата Сообщение от insideone Посмотреть сообщение
Да ладно, всяко бывает. Самые суровые баги у меня кстати тоже были от невнимательности, когда пологаешь что уже все верно написал и даже не смотришь туда))
Насчет программирования с DirectX - занимаюсь и сейчас, потихоньку. Сессия и все такое) Жаль начал с DirecX9 сейчас наверное уже там больше фишек в 10ке) но уже поздно переходить.
К сожалению спецом назвать себя не могу, всего лишь та часть DirectX что рулит спрайтами знакома мне более или менее) Однако на форуме есть специальный раздел для программирования графики, хотя выглядит он вяло) Интересно было бы оживить его, но пока что не до этого...
Тоже сессия поэтому очень медленно продвигаюсь...раньше занимался на 8 и перешел на 9й икс, но разницы там большой на заметил, однако уже все забыл практически, когда сел за 10...есть заметные изменения и в основном пока я на сколько вижу они коснулись инициализации устройства, так что не проблема в с переходом...но проблема найти учебник, я программлю на Visual C++ а есть несколько учебников для 10 икса но написаны они под С# и ко всему прочему в инете их нет только покупать, а цена за 2000 заваливает...приходиться выкручитьвася непонятно как...хочу собрать группу людей что бы сесть и вместе долбить это, одному ужасно тяжело...до сих пор что бы что-то написать приходить в книгу смотреть...тяжело идет блин...а ни курсов ничего найти по этому делу не могу так что вот так буду действовать
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
21.01.2010, 19:46 #11
Попов А.А. "DirectX 10 - это просто. Программируем графику на С++" ~300ру.
Отзывы хорошие, жаль не нашёл пока у нас в магазине, может закажу когда будет время нужное) А книги это хорошо, я бы не скупился на них) Знания - бесценны)

Кстати помоему долбить коллективно не так то просто, ведь для этого нужно будет вводить какие то стандарты чтобы группа не запуталась. Ну в общем вопрос организации. Я пожалуй все один напишу. Вся экспа мне :-D Просто двиг уже почти готов и отступиться уже невозможно) хочется доделать...
0
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
21.01.2010, 19:53  [ТС] #12
Я по ней и программирую...к сожалению не могу сказать что хорошая книга...видишь ли она ограничивается только тем что в ней написано так сказать...вот если есть несколько свойств и они применили одно из них все остальные они объяснять не собираются...а по 9ке книга вообще шикарная...все объяснено предельно понятно и максимально развернуто...
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
21.01.2010, 20:04 #13
к сожалению не могу сказать что хорошая книга...видишь ли она ограничивается только тем что в ней написано так сказать...вот если есть несколько свойств и они применили одно из них все остальные они объяснять не собираются...
и все таки, чего не хватает конкретнее?) интересно...

а по 9ке книга вообще шикарная...все объяснено предельно понятно и максимально развернуто...
что за книга?)
0
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
21.01.2010, 20:21  [ТС] #14
Цитата:
а по 9ке книга вообще шикарная...все объяснено предельно понятно и максимально развернуто...
что за книга?)
DirectX и Delphi: разработка графических и мультимедийных приложений

Понимаешь, не хватает описания они очень узко ограничиваются примерами книги и не выходят за рамками этого...ну вот пример, ну как меньшее из зол скажем так:
в D3D10_DRIVER_TYPE в книге исвользуется только одно значение - D3D_DRIVER_TYPE_NULL еще какие-либо возможные значения они не то что не описали даже не перечислили их, ну и все в таком же духе.
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
21.01.2010, 20:35 #15
Понимаешь, не хватает описания они очень узко ограничиваются примерами книги и не выходят за рамками этого...ну вот пример, ну как меньшее из зол скажем так:
в D3D10_DRIVER_TYPE в книге исвользуется только одно значение - D3D_DRIVER_TYPE_NULL еще какие-либо возможные значения они не то что не описали даже не перечислили их, ну и все в таком же духе.
Мне кажется это не слишком удивительно, ведь цель книги обучить как использовать DirectX а не полностью её описать. Для этого есть MSDN - когда у тебя есть цель и нужно узнать лишь тонкость в приципе особого разжевывания для новичка то уже не нужно.
хочу собрать группу людей что бы сесть и вместе долбить это, одному ужасно тяжело...
Если не секрет, проект коммерческий?)
0
21.01.2010, 20:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2010, 20:35
Привет! Вот еще темы с ответами:

mingw и lib - C++
Как в mingw в коде подключить файл lib, #pragma comment(lib, &quot;Gdi32.lib&quot;) не помогает. А то пытаюсь использовать SetTextColor и подобные...

imagehlp.lib - Visual C++
есть ли в Visual Studio 2010 аналог этой библиотеки? Со старыми студиями при подключении этой библиотеки не возникало проблем, с новой же...

Нужна ibcd.lib - Visual C++
Добрый день. У меня VC++6 кинулся нет ibcd.lib fatal error LNK1104: cannot open file &quot;ibcd.lib&quot; Где скачать не нашел. У кого есть...

Файлы *.lib и *.dll - C++
Привет всем! Вот решил начать писать проект и задался вопросом: как использовать *.lib и *.dll файлы? Я даже не знаю что в этих файлах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru