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

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

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

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

30.07.2013, 22:30. Просмотров 13452. Ответов 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 =) Заранее спс!

47
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
31.07.2013, 22:29  [ТС] #31
Я разложил все по папкам в VC. Реакция неоднозначная. Появилось много новых странных ошибок
1>App.obj : error LNK2001: неразрешенный внешний символ "__RTC_Shutdown"
1>App.obj : error LNK2001: неразрешенный внешний символ "__RTC_InitBase"
1>App.obj : error LNK2019: ссылка на неразрешенный внешний символ __RTC_CheckEsp в функции "public: bool __thiscall App::Init(void)" (?Init@App@@QAE_NXZ)
1>App.obj : error LNK2019: ссылка на неразрешенный внешний символ ___security_cookie в функции "public: int __thiscall App::Execute(void)" (?Execute@App@@QAEHXZ)
1>App.obj : error LNK2019: ссылка на неразрешенный внешний символ @__security_check_cookie@4 в функции "public: int __thiscall App::Execute(void)" (?Execute@App@@QAEHXZ)
1>App.obj : error LNK2019: ссылка на неразрешенный внешний символ @_RTC_CheckStackVars@8 в функции "public: int __thiscall App::Execute(void)" (?Execute@App@@QAEHXZ)
1>LINK : error LNK2001: неразрешенный внешний символ "_WinMainCRTStartup"

Чего же я такой косячный!
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 22:41 #32
Тут читали, как среду настроить? http://lazyfoo.net/SDL_tutorials/les...dows/index.php
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 23:09 #33
Сейчас ещё раз всё сделал. Давайте по порядку. Уберите всё, что поместили в папки VC и прочие посторонние папки.

Создаёте пустой проект: Общие - Пустой. Добавляете в проект файл .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
#include "SDL.h"
#include <cstdlib>
#include <iostream>
 
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;
}
Заходите в свойства проекта - С/С++ - общие - дополнительные каталоги включаемых файлов: пишите здесь путь к папке include: C:\Documents and Settings\Administrator\Desktop\SDL\SDL2-devel-2.0.0-VC\SDL2-2.0.0\include.

Компоновщик - общие - дополнительные каталоги библиотек: пишите путь к папке х86: C:\Documents and Settings\Administrator\Desktop\SDL\SDL2-devel-2.0.0-VC\SDL2-2.0.0\lib\x86

Компоновщик - ввод - дополнительные зависимости: пишите здесь названия lib файлов:
SDL2.lib
SDL2main.lib
SDL2test.lib

Компоновщик - ввод - Игнорировать все стандартные библиотеки (вторая строка): пишите здесь msvcrt.lib

Компоновщик - система: выбираете Консоль.

Компилируете.

Результат.
4
Миниатюры
Прилинковать SDL к V.S. 2010  
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
31.07.2013, 23:19  [ТС] #34
alsav22, спасибо вам огромное за помощь. Завтра обязательно попробую
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2013, 00:21 #35
Сейчас скачал и подключил SDL 1.2.15 (как описал в 33 посте). Код, из 17 поста, скомпилировался и заработал.
2
Миниатюры
Прилинковать SDL к V.S. 2010  
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2013, 05:17 #36
Если в свойствах проекта выбрать не консоль, а windows, то будет выводиться только окно программы.

Добавлено через 4 часа 51 минуту
Вот этот код работает с SDL 2.0:
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
#include "SDL.h"
#include <cstdlib>
#include <iostream>
#include <Windows.h>
 
int main(int argc, char *argv[])
{
    //Start SDL
    SDL_Init(SDL_INIT_EVERYTHING);
    
    SDL_Window *window;
    window = SDL_CreateWindow("SDLwindow", 600, 300, 400, 300, SDL_WINDOW_OPENGL);
    
    SDL_Event event;
    
    while (1) 
    {
        while (SDL_PollEvent(&event)) 
        {
            switch (event.type) 
            {
                case SDL_KEYDOWN:
                    std::cout << "The " 
                              <<  SDL_GetKeyName(event.key.keysym.sym)
                              << " key was pressed!\n";
                    break;
                case SDL_QUIT:
                    exit(0);
            }
        }
    }
    
    SDL_DestroyWindow(window); 
    
    //Quit SDL
    SDL_Quit();
    
    return 0;
}
1
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
01.08.2013, 17:00  [ТС] #37
alsav22, Все компилится, линкуется и работает! Что еще нужно для счастья!
0
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
26.10.2013, 14:33 #38
Цитата Сообщение от alsav22 Посмотреть сообщение
Компоновщик - ввод - Игнорировать все стандартные библиотеки (вторая строка): пишите здесь msvcrt.lib
Я написал в этом месте msvcrt.lib, но при компиляции выскакивает вот такая ошибка
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(304,9): error MSB4030: "msvcrt.lib" — недопустимое значение параметра "IgnoreAllDefaultLibraries" задачи "Link". Параметр "IgnoreAllDefaultLibraries" относится к типу "System.Boolean".
alsav22, что я неправильно делаю? Подскажи пожалуйста
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:48 #39
Вообще ничего не писать пробовали? Здесь пишите? Во второй сроке? Там две настройки с одинаковыми названиями.
1
Миниатюры
Прилинковать SDL к V.S. 2010  
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:49 #40
SDL какая?
0
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
26.10.2013, 14:55 #41
Пишу во второй строке. Вот еще скрин покажу
SDL версии SDL-1.2.15
0
Миниатюры
Прилинковать SDL к V.S. 2010  
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 15:04 #42
Цитата Сообщение от BurnItDown Посмотреть сообщение
Пишу во второй строке.
Вы строки снизу считаете? Скрин мой посмотрите, где писать нужно.
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Вообще ничего не писать пробовали?
Добавлено через 4 минуты
Имеется ввиду вторая с тем же названием.
1
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
26.10.2013, 15:08 #43
alsav22, Все получилось ) Надо было в третьей строчке писать а я во второй. Спасибо
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 15:42 #44
На вопрос, если не трудно, ответьте.
0
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
26.10.2013, 16:41 #45
Цитата Сообщение от alsav22 Посмотреть сообщение
Вообще ничего не писать пробовали?
Раньше не пробовал. А сейчас убрал ту строчку msvcrt.lib и при компиляции показывает только одно предупреждении

MSVCRTD.lib(cinitexe.obj) : warning LNK4098: библиотека по умолчанию "msvcrt.lib" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
Сама программа нормально работает

Добавлено через 4 минуты
alsav22, я нашел в интернете одну статью по SDL, на русском языке
http://plg.lrn.ru/2010/10/sdl-tutorial-part-1/
А других книг что-то вообще нет. Только на английском(
1
26.10.2013, 16:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2013, 16:41
Привет! Вот еще темы с ответами:

Установка 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 с...


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

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

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