Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/81: Рейтинг темы: голосов - 81, средняя оценка - 4.73
Ryabchik
18 / 19 / 0
Регистрация: 09.01.2013
Сообщений: 168
1

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

30.07.2013, 22:30. Просмотров 15175. Ответов 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 2.0.3 к Visual Studio 2010 Express
ребята делал все как написано тут версия сдл 2.0.3 но в конце выдает такое...

SDL 2. Как правильно прилинковать/подключить к Visual Studio?
Я пересмотрел много материалов по этой теме, но никакие из них мне не помогли....

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

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

SDL - Конфигурирование
Всем доброго времени суток. Недавно натолкнулся проблему с настройкой SDL....

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

Добавлено через 36 секунд
Выбор консоли ничего не меняет
0
coloc
погромист
412 / 248 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 00:00 6
Попробуй ключи
-lSDLmain
-lSDL
-lkernel32
Если не поможет, то кури http://lazyfoo.net/SDL_tutorials/lesson01/windows/index.php
1
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 05:10 7
Танцы с бубном. Работы, правда, не увидел, но компилируется без ошибок. Попробуйте библиотеку msvcrt.lib прописать в игнорируемые. Одну её. В свойствах проекта есть пункт, где можно прописать игнорирование всех стандартных библиотек, а в другом пункте можно прописать какие. Вот там, где какие.
1
Ryabchik
18 / 19 / 0
Регистрация: 09.01.2013
Сообщений: 168
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
погромист
412 / 248 / 30
Регистрация: 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 / 19 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 17:27  [ТС] 10
coloc, заработало! Спасибо вам огромное!
Поясните, почему так? Каким местом SDL затрагивает WinAPI? Или это из-за выбора \SUBSYSTEM:WINDOWS?
0
coloc
погромист
412 / 248 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 17:54 11
Ryabchik, у тебя какая версия сдл?
0
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 17:59 12
Цитата Сообщение от Ryabchik Посмотреть сообщение
Или это из-за выбора \SUBSYSTEM:WINDOWS?
Может и из-за этого (я же не зря написал: "танцы с бубном"), хотя у меня компилировалось при выборе и консоли, и windows.

Не по теме:

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

0
coloc
погромист
412 / 248 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 18:03 13
alsav22, в смысле работы не увидел? Там и не должна выполнятся работа. Там даже нет инициализации СДЛ. Просто класс-заготовка.
0
alsav22
5445 / 4840 / 831
Регистрация: 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 / 19 / 0
Регистрация: 09.01.2013
Сообщений: 168
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
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 18:37 16
Цитата Сообщение от Ryabchik Посмотреть сообщение
у вас работает в Студии?
Работает что?

Добавлено через 3 минуты
Ryabchik, там ещё либы под разные платформы, учитывайте это.

Добавлено через 2 минуты
Цитата Сообщение от Ryabchik Посмотреть сообщение
SDL-1.2.15
почему не поновее?
0
coloc
погромист
412 / 248 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 19:45 17
Цитата Сообщение от alsav22 Посмотреть сообщение
почему не поновее?
Сейчас все статьи именно по этой версии, для версии поновее надо доку читать. Для начала пойдет.
Цитата Сообщение от alsav22 Посмотреть сообщение
но на нажатие не реагирует.
СДЛ переводит вывод в файл stdout

Добавлено через 5 минут
alsav22, вот такой вариант у меня работает
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
37
38
39
40
41
42
#include <SDL\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_Surface *screen = NULL;
    
    if((screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF))==NULL){
        return 1;
    }
    
    bool running = true;
    
    while( running ) {
        while( SDL_PollEvent( &event ) ) {
            switch (event.type) 
            {
                case SDL_KEYDOWN:
                    printf("The %s key was pressed!\n",
                    SDL_GetKeyName(event.key.keysym.sym));
                break;
            
                case SDL_QUIT:
                    running = false;
            }
        }
        SDL_Flip( screen );
    }
    
    //Quit SDL
    SDL_Quit();
    //system("pause");
    return 0;
}
0
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 20:42 18
Это у меня просто не компилируется. Не находит:
SDL_SetVideoMode
SDL_HWSURFACE
SDL_DOUBLEBUF
SDL_Flip
0
Ryabchik
18 / 19 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 21:04  [ТС] 19
alsav22, у меня то же самое
0
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 21:06 20
А из 14 поста компилируется?
0
31.07.2013, 21:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 21:06

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

Оптимизация SDL
Начал изучать SDL. Все бы хорошо, но процесс созданного окна кушает 25%...

SDL mouse
если обработка нажатия на левую кнопку мыши это if (occur.type ==...


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

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

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