Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
1

Создать проект с использованием существующего исходного кода

15.09.2011, 11:57. Просмотров 2242. Ответов 23
Метки нет (Все метки)

Здравствуйте, уважаемые форумчане! Помогите пожалуйста с таким вопросом: есть готовые .cpp и .h файлы, в которых я инклюжу другие исходники (находятся во внешних папках), хочу создать проект из этих файлов. Создаю пустой Win32 Project, добавляю туда упомянутые файлы. При попытке скомпилировать выдаёт ошибку - Unresolved external symbol. В просмотрщике структуры классов - Class view - среда видит только те классы, которые объявлены в исходниках, лежащих в папке проекта, но не видит - объявленные в подключаемых из внешней папки. Я сделал вывод, что не компилируется именно потому, что не видит внешние классы, т.к. unresolved external symbol относится именно ко внешним методам. Речь идёт о 2008 и 2010 студиях, и там и там все пути правильно прописаны и проверены неоднократно. Подскажите как это лечится.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2011, 11:57
Ответы с готовыми решениями:

Создать новый файл, удалив заданную последовательность символов из существующего.
16. Открыть файл, имя которого задается с клавиатуры. Создать новый файл,...

Создать отсутствующий файл и записать в него начальный и конечный элементы существующего файла
Даны имена двух файлов вещественных чисел. Известно, что первый из них...

нет исходного кода
Функция для перевода десятичных целых чисел в произвольную систему счисления во...

Защита исходного кода
Как обфусцировать плагин. Как я понял это способ защиты от декомпиляции amxx,...

Перенос исходного кода из Assembler на C++
Доброго времени суток форумчане! Столкнулся с проблемой переноса кода на...

23
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2011, 12:01 2
Цитата Сообщение от compilator Посмотреть сообщение
в которых я инклюжу другие исходники (находятся во внешних папках)
- есть уверенность в том что для данного проекта путь к внешним файлам сохранился

Я к тому что вот такая запись для папки project1 уже не будет тождественной для папки project2
C++
1
#include "additiondir\\someheader.h"
Для разбора лучше всего привести часть кода с подключением а также указать реальное рассположение файлов и папок
0
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
15.09.2011, 15:26  [ТС] 3
Привожу код, находящийся в файле w:\C++ Projects\Colored Cube\Init Direct3D.cpp :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "d3dApp.h" // вот этот файл содержит класс  D3DApp и находится в w:\C++ Projects\Common
#include "Cube.h"
 
class CubeApp : public D3DApp
{
public:
    CubeApp(HINSTANCE hInstance);
    ~CubeApp();
 
    virtual void initApp();
    virtual void onResize();
    virtual void updateScene(float dt);
    virtual void drawScene();
 
    virtual LRESULT msgProc(UINT msg, WPARAM wParam, LPARAM lParam);
 
 
private:
 
    void buildFX();
    void buildVertexLayouts();
 
private:
 
 ID3D10Effect* pFX;
 ID3D10EffectMatrixVariable* pfxmWVP;
 ID3D10EffectTechnique* pfxTech;
 ID3D10InputLayout* pInpLayout;
 
 D3DXMATRIX mView, mProj, mWVP;
 
 float theta, phi;
 
 Cube cube;
 
};
В просмотрщике Class view класс D3DApp не виден, хотя путь к d3dApp.h прописан VC++ Directories.
0
Миниатюры
Создать проект с использованием существующего исходного кода  
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
15.09.2011, 15:28  [ТС] 4
Самое интересное это то, что даже когда я добавляю внешние файлы в папку проекта, всё равно пишет unresolved external symbol.
0
sandye51
программист С++
834 / 593 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
15.09.2011, 16:14 5
надо не только добавлять файлы в проект, но также либо класть их в папку проекта дополнительно, либо указывать путь в project -> properties -> c++ -> general -> additional include directories
0
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2011, 16:39 6
Цитата Сообщение от compilator Посмотреть сообщение
Самое интересное это то, что даже когда я добавляю внешние файлы в папку проекта, всё равно пишет unresolved external symbol.
-

Цитата Сообщение от compilator Посмотреть сообщение
В просмотрщике Class view класс D3DApp не виден, хотя путь к d3dApp.h прописан VC++ Directories
- предупреждения говорят что нет прототипа функций, d3dApp.срр или же
C++
1
#pragma comment(lib,d3dApp.lib)
подключил???Они точно в папке проекта???
0
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
15.09.2011, 18:22  [ТС] 7
Файлы точно в папке, #pragma comment(lib, d3dApp.lib) - такой библиотеки нет (без неё должно работать) - результат тот же. В общем, я изначально думал что рационального объяснения этому нет, но были сомнения относительно правильности своих действий. Тут я так понял уже всё должно работать, но не работает.
0
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2011, 22:17 8
Цитата Сообщение от compilator Посмотреть сообщение
Тут я так понял уже всё должно работать, но не работает.
- 10ка вообще тяжолый инструмент, желание разработчиков привести квсё к стандарту отразилось на кодах предыдущих версий - ошибками являются казалось совсем безобидные вещи, честно скажу без проекта сложно дельно помочь(
1
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
15.09.2011, 23:13  [ТС] 9
Проект полностью рабочий, т.к. исходники я беру из готового примера, который сам по себе запускался, проблема в самой системе подключения. Выкладываю исходный рабочий проект, нерабочий вариант и папку с внешними исходниками (все под VS 2008), хотя очень не хотелось кого-то отвлекать. Благодарю за помощь.
0
Вложения
Тип файла: rar Проекты.rar (6.69 Мб, 28 просмотров)
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
16.09.2011, 04:12 10
попробуй проект во вложении... только не забудь все cpp-шники скомпилить тоже.
я не могу проверить , у меня direct SDK Не установлен.
1
Вложения
Тип файла: rar Cubus vulgarus 111.rar (2.50 Мб, 14 просмотров)
-=ЮрА=-
Заблокирован
Автор FAQ
16.09.2011, 08:02 11
compilator, беру в работу позже сюда отпишу...
1
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
16.09.2011, 14:52  [ТС] 12
Юра, ещё раз спасибо, буду ждать.


OstapBender, спасибо! Ошибок стало меньше - не 13, а 8, но к сожалению тоже не компилируется. И всё та же проблема с unresolved external symbols. Теперь в просмотрщике структуры классов появились классы D3DApp и GameTimer. А что ты изменил, что считал причиной неполадок?
0
-=ЮрА=-
Заблокирован
Автор FAQ
16.09.2011, 17:11 13
compilator, вот что я предлагаю сделать(см рисунок) + у меня не установлена SDK и компилятор ругается на #include <d3dx10.h>, если он имеется думаю проблемм решены
1
Миниатюры
Создать проект с использованием существующего исходного кода  
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
16.09.2011, 17:56 14
я сделал тоже что и Юра, запихнул все файлы в 1 папку, добавил их в проект через solution explorer, и усё.

ты ответь на такой вопрос - у тебя direct SDK То стоит?
0
-=ЮрА=-
Заблокирован
Автор FAQ
16.09.2011, 18:25 15
Цитата Сообщение от OstapBender Посмотреть сообщение
у тебя direct SDK То стоит?
Из этого
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
#include <d3dx10.h>
заключаю что Direct X10 SDK. Тут в другом дело compilator, ты выполнил команду Register PSDK Directories with Visual Studio???Если этой операции не было проведено компилятор пытается найти хедеры SDK в стандартных каталогах Visual Studio, где их попросту нет они ведь в PSDK Directories!!!
0
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
16.09.2011, 20:33  [ТС] 16
DirectX SDK у меня установлен. Пути к .h и .lib файлам SDK я прописал. Дело в том, что примеры из книги которые я разбираю запускались, для этого я прописывал пути к директориям SDK. Теперь я просто беру исходники из примеров и хочу сделать на их основе свой проект. Команду Register PSDK Directories with Visual Studio я не выполнял, в мануале на MSDN этого не указывалось, просто пишут - укажите пути к include и library файлам в VC++ Directories. Но можно попробовать, просто я не знаю как это сделать. Ребят, выкладываю архив с файлами из SDK (папки Include и Lib), может скомпилируется, посмотрите пожалуйста. Хотя скорее всего такой трюк не пройдёт, но это те папки к которым я прописывал пути в VS.
0
Вложения
Тип файла: rar Microsoft DirectX SDK (June 2010).rar (1.54 Мб, 18 просмотров)
-=ЮрА=-
Заблокирован
Автор FAQ
16.09.2011, 20:35 17
Цитата Сообщение от compilator Посмотреть сообщение
Команду Register PSDK Directories with Visual Studio я не выполнял, в мануале на MSDN этого не указывалось, просто пишут - укажите пути к include и library файлам в VC++ Directories. Но можно попробовать, просто я не знаю как это сделать.
- чичас поковыряюсь, подожди немножко, хорошо что SDK выложил теперь можно дальше компилить...
1
compilator
2 / 2 / 0
Регистрация: 06.02.2010
Сообщений: 33
16.09.2011, 23:41  [ТС] 18
Юра, спасибо, надеюсь файлов будет достаточно для компиляции...
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.09.2011, 12:24 19
compilator, в фале d3dUtil.h запиши подключение хедеров вот так
C++
1
2
3
4
5
#include <cassert>
#include "DirectXSDK\\include\\dxerr.h"
#include "DirectXSDK\\include\\d3dx10.h"
 
#pragma comment (lib,"DirectXSDK\\lib\\d3dx10.lib")
Как ты догадался я извлёк содержимое Microsoft DirectX SDK (June 2010) в папку под названием DirectXSDK. ВСЯ ПРОБЛЕММА БЫЛА В ТОМ ЧТО SDK незарегенен в стандартных путях VS студии!
1
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
17.09.2011, 15:08 20
compilator, в 10-ой студии пути прописываются у каждого проекта по отдельности в Project properties.
Ты настроил их для твоего этого проекта?
0
17.09.2011, 15:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2011, 15:08

Перенос исходного кода из Assembler на C++
Доброго времени суток форумчане! Столкнулся с проблемой переноса кода на...

Востановления исходного кода из файла o
Здравствуйте. Писал программу, неожиданно компьютер перезагрузился в файл cpp...

Некорректное чтение исходного кода
#include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int main() { ...


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

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

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