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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 90, средняя оценка - 4.91
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
#1

Прилинковать SDL к V.S. 2010 - C++

30.07.2013, 22:30. Просмотров 12910. Ответов 47
Метки нет (Все метки)

Доброго всем вечера.
Я знаю, что подобных тем было много, но, справиться с проблемой не могу.
Скачал с оф.сайта все .h, SDL.lib, SDLmain.lib и SDL.dll.
dll поместил в System32, либы и .h собрал в папку.
В свойствах проекта указал к папке путь и выбрал Многопоточный Dll (\WD)
В компоновщике указал обе библиотеки и выбрал \SUBSYSTEM:WINDOWS.

При компиляции простенького проекта:
LINK : fatal error LNK1104: не удается открыть файл "SDL.lib"

Если поместить все файлы в папку проекта и поменять путь в настройках:
MSVCRT.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
D:\visual studio 2010\Projects\SDL\Урок 1\Debug\Урок 1.exe : fatal error LNK1120: 1 неразрешенных внешних элементов

Вот код:
App.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "App.h"
 
App::App() {}
 
int App::Execute() {
    return 0;
}
 
int main(int argc, char* argv[]) {
    App App;
 
    return App.Execute();
}
App.h
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef _APP_H_
#define _APP_H_
 
#include <SDL.h>
 
class App {
    public:
        App();
        int Execute();
};
#endif
Буду рад любой помощи
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прилинковать SDL к V.S. 2010 (C++):

Прилинковать SDL 2.0.3 к Visual Studio 2010 Express - C++
ребята делал все как написано тут версия сдл 2.0.3 но в конце выдает такое &quot;sdltest.exe&quot;: Загружено: &quot;C:\Users\Iliya\Documents\Visual...

SDL 2. Как правильно прилинковать/подключить к Visual Studio? - C++
Я пересмотрел много материалов по этой теме, но никакие из них мне не помогли. 1. Подключил инклуды. 2. Подключил либы (Файлы *.lib) ...

Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? - C++
В официальной доке как-то скомкано написано. При инициализации SDL TTF и при загрузке шрифта ошибок нет. Но текст на экране не...

C++ SDL - C++
Всем привет! Работал я значи в SDL, а потом что-то нажалось ил не нажалось и вообщем теперь, при компиляции любого(работающего,...

Странность С++ и SDL - C++
Здравствуйте уважаемые форумчане возникла непонятная ситуация вообщем писал на С++ классы и учил OpenGL и все вроде нормально как вдруг...

Документация по SDL - C++
Люди , кто знает пожалуйста киньте ссылки на документацию по SDL =) Заранее спс!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2013, 23:25 #2
Цитата Сообщение от Ryabchik Посмотреть сообщение
выбрал \SUBSYSTEM:WINDOWS.
Нужно или консоль выбирать, или проект другой создавать.
0
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
30.07.2013, 23:36  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
проект другой создавать.
Какой другой?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2013, 23:42 #4
Win32.
0
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
30.07.2013, 23:50  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Win32.
Я, собственно, его и создаю

Добавлено через 36 секунд
Выбор консоли ничего не меняет
0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 00:00 #6
Попробуй ключи
-lSDLmain
-lSDL
-lkernel32
Если не поможет, то кури http://lazyfoo.net/SDL_tutorials/les...dows/index.php
1
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 05:10 #7
Танцы с бубном. Работы, правда, не увидел, но компилируется без ошибок. Попробуйте библиотеку msvcrt.lib прописать в игнорируемые. Одну её. В свойствах проекта есть пункт, где можно прописать игнорирование всех стандартных библиотек, а в другом пункте можно прописать какие. Вот там, где какие.
1
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
31.07.2013, 16:17  [ТС] #8
Прогресс маленький, но есть.
Теперь он находит либы и .h, а ошибка одна:
MSVCRT.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
D:\visual studio 2010\Projects\SDL\Урок 1\Debug\Урок 1.exe : fatal error LNK1120: 1 неразрешенных внешних элементов

alsav22,
Если я добавлю игнорирование msvcrt.lib, ошибок 5:
App.obj : error LNK2001: неразрешенный внешний символ "__RTC_Shutdown"
App.obj : error LNK2001: неразрешенный внешний символ "__RTC_InitBase"
App.obj : error LNK2019: ссылка на неразрешенный внешний символ __RTC_CheckEsp в функции _SDL_main
App.obj : error LNK2019: ссылка на неразрешенный внешний символ @_RTC_CheckStackVars@8 в функции _SDL_main
LINK : error LNK2001: неразрешенный внешний символ "_WinMainCRTStartup"
D:\visual studio 2010\Projects\SDL\Урок 1\Debug\Урок 1.exe : fatal error LNK1120: 5 неразрешенных внешних элементов

coloc,
Цитата Сообщение от coloc Посмотреть сообщение
Попробуй ключи
-lSDLmain
-lSDL
-lkernel32
Простите мою безграмотность, но как и куда их попробовать?

Цитата Сообщение от coloc Посмотреть сообщение
Если не поможет, то кури http://lazyfoo.net/SDL_tutorials/les...dows/index.php
Все сделал, как там

Добавлено через 5 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
компилируется без ошибок.
Сижу и завидую)

Добавлено через 2 часа 2 минуты
Оочень актуально
0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 16:59 #9
Попробуй вместо int main
C++
1
2
3
 #include <windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
1
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
31.07.2013, 17:27  [ТС] #10
coloc, заработало! Спасибо вам огромное!
Поясните, почему так? Каким местом SDL затрагивает WinAPI? Или это из-за выбора \SUBSYSTEM:WINDOWS?
0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 17:54 #11
Ryabchik, у тебя какая версия сдл?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 17:59 #12
Цитата Сообщение от Ryabchik Посмотреть сообщение
Или это из-за выбора \SUBSYSTEM:WINDOWS?
Может и из-за этого (я же не зря написал: "танцы с бубном"), хотя у меня компилировалось при выборе и консоли, и windows.

Не по теме:

Я только не понял, как это всё работать должно? В каком проекте? Код компилируется, но работы я не увидел.

0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 18:03 #13
alsav22, в смысле работы не увидел? Там и не должна выполнятся работа. Там даже нет инициализации СДЛ. Просто класс-заготовка.
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 18:10 #14
Я не код ТС пробовал, а такой, например:
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
#include "SDL.h"
#include <cstdlib>
#include <iostream>
#include <Windows.h>
//using namespace std;
 
//int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
int main(int argc, char *argv[])
{
    //Start SDL
    SDL_Init( SDL_INIT_EVERYTHING );
    
    SDL_Event event;
 
    SDL_WaitEvent(&event);
 
    switch (event.type) 
    {
        case SDL_KEYDOWN:
            printf("The %s key was pressed!\n",
                   SDL_GetKeyName(event.key.keysym.sym));
            break;
        case SDL_QUIT:
            exit(0);
    }
    
    //Quit SDL
    SDL_Quit();
    //system("pause");
    return 0;
}
Насколько я понял, должно обрабатываться нажатие клавиши. Консоль запускается, но на нажатие не реагирует.
0
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
31.07.2013, 18:25  [ТС] #15
coloc, SDL-1.2.15

Добавлено через 11 минут
Кхм. Если усложнить проект, появляются ошибки по поводу ссылок на неразрешенные внешние элементы.

App.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_SetVideoMode в функции "public: bool __thiscall App::Init(void)" (?Init@App@@QAE_NXZ)
App.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_Init в функции "public: bool __thiscall App::Init(void)" (?Init@App@@QAE_NXZ)
App.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_PollEvent в функции "public: int __thiscall App::Execute(void)" (?Execute@App@@QAEHXZ)
App.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_Quit в функции "public: void __thiscall App::Cleanup(void)" (?Cleanup@App@@QAEXXZ)

Добавлено через 31 секунду
alsav22, у вас работает в Студии?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 18:25
Привет! Вот еще темы с ответами:

Установка SDL 2 - C++
Из-за некоторых проблем с обработкой клавиатуры решил перейти с GLUT на SDL 2. Вопрос: как на Ubuntu установить этот самый SDL 2? ...

инициализация SDL - C++
подключил #include &quot;SDL.h&quot; - проверил, запустилось. добавил первую строку из статьи про работу сдл SDL_Init(SDL_INIT_VIDEO); ...

SDL Графика. - C++
Добрый день! Не могу соединить два проекта, в одном изображение переводится в ч\б, во втором тонируется изображение. Мне нужно получить...

SDL - Конфигурирование - C++
Всем доброго времени суток. Недавно натолкнулся проблему с настройкой SDL. Дело в том, что мне нужно отключить переадресацию stdio с...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.07.2013, 18:25
Ответ Создать тему
Опции темы

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