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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 90, средняя оценка - 4.91
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
30.07.2013, 22:30     Прилинковать SDL к V.S. 2010 #1
Доброго всем вечера.
Я знаю, что подобных тем было много, но, справиться с проблемой не могу.
Скачал с оф.сайта все .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
Буду рад любой помощи
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 22:30     Прилинковать SDL к V.S. 2010
Посмотрите здесь:

C++ Странность С++ и SDL
C++ инициализация SDL
Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? C++
C++ Установка SDL 2
C++ SDL C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 21:16     Прилинковать SDL к V.S. 2010 #21
Ryabchik,alsav22, значит у вас обоих вторая версия СДЛ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
31.07.2013, 21:23  [ТС]     Прилинковать SDL к V.S. 2010 #22
Цитата Сообщение от alsav22 Посмотреть сообщение
А из 14 поста компилируется?
Нет.
_SDL_Quit, _SDL_GetKeyName, _SDL_WaitEvent, _SDL_Init - неразрешенные внешние ...
Ну и _WinMain@16 в функции ___tmainCRTStartup, разумеется.
Но последнее уходит заменой на WinMain

Добавлено через 2 минуты
Цитата Сообщение от coloc Посмотреть сообщение
вторая версия СДЛ
Я скачивал с оф сайта http://www.libsdl.org/.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 21:24     Прилинковать SDL к V.S. 2010 #23
Цитата Сообщение от Ryabchik Посмотреть сообщение
Я скачивал с оф сайта http://www.libsdl.org/.
Конкретно скажи откуда либу качал? Там есть и 1.2.5 и 2.0 версии. Как я знаю, WinMain требует вторая версия
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
31.07.2013, 21:26  [ТС]     Прилинковать SDL к V.S. 2010 #24
Вот - http://www.libsdl.org/download-1.2.php.
Win32 - Visual C++
Про 2.0 написано - not release version, may be unstable
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 21:26     Прилинковать SDL к V.S. 2010 #25
del
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
31.07.2013, 21:29  [ТС]     Прилинковать SDL к V.S. 2010 #26
Цитата Сообщение от coloc Посмотреть сообщение
del
А что взамен?
Uzer5
 Аватар для Uzer5
4 / 4 / 1
Регистрация: 22.09.2012
Сообщений: 11
31.07.2013, 21:43     Прилинковать SDL к V.S. 2010 #27
только сегодня посадил SDL на VS2012.
Просто скопировал всё из папки lib в lib, include в папку include/SDL.
Затем линкуем (Project->Properties->Configuration Properties->Linker->Input добавляем SDLmain.lib; SDL.lib
Прога отлично бегает.
П.С. SDL.dll от minGw не подошёл, пришлось скачивать версию для VS и пришлось /NODEFAULTLIB:library msvcrt.lib прописать.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 21:54     Прилинковать SDL к V.S. 2010 #28
Цитата Сообщение от coloc Посмотреть сообщение
Ryabchik,alsav22, значит у вас обоих вторая версия СДЛ
У меня да, вторая.

Добавлено через 3 минуты
Цитата Сообщение от Uzer5 Посмотреть сообщение
только сегодня посадил SDL
SDL какая? И если не трудно, какой-нибудь рабочий код для демонстрации работы.

Добавлено через 4 минуты
Цитата Сообщение от Ryabchik Посмотреть сообщение
Нет.
_SDL_Quit, _SDL_GetKeyName, _SDL_WaitEvent, _SDL_Init - неразрешенные внешние ...
Ну и _WinMain@16 в функции ___tmainCRTStartup, разумеется.
Но последнее уходит заменой на WinMain
У вас линкер ошибки выдаёт. Ещё раз:
Цитата Сообщение от alsav22 Посмотреть сообщение
Ryabchik, там ещё либы под разные платформы, учитывайте это.
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
31.07.2013, 21:57  [ТС]     Прилинковать SDL к V.S. 2010 #29
Цитата Сообщение от alsav22 Посмотреть сообщение
Ryabchik, там ещё либы под разные платформы, учитывайте это.
Ну да, Win32 -> Visual C++
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 22:14     Прилинковать SDL к V.S. 2010 #30
А либы для х86 подключили? У меня такие ошибки появляются, если либы для х64 подключить.
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
31.07.2013, 22:29  [ТС]     Прилинковать SDL к V.S. 2010 #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"

Чего же я такой косячный!
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 22:41     Прилинковать SDL к V.S. 2010 #32
Тут читали, как среду настроить? http://lazyfoo.net/SDL_tutorials/les...dows/index.php
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 23:09     Прилинковать SDL к V.S. 2010 #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

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

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

Результат.
Миниатюры
Прилинковать SDL к V.S. 2010  
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
31.07.2013, 23:19  [ТС]     Прилинковать SDL к V.S. 2010 #34
alsav22, спасибо вам огромное за помощь. Завтра обязательно попробую
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2013, 00:21     Прилинковать SDL к V.S. 2010 #35
Сейчас скачал и подключил SDL 1.2.15 (как описал в 33 посте). Код, из 17 поста, скомпилировался и заработал.
Миниатюры
Прилинковать SDL к V.S. 2010  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2013, 05:17     Прилинковать SDL к V.S. 2010 #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;
}
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
01.08.2013, 17:00  [ТС]     Прилинковать SDL к V.S. 2010 #37
alsav22, Все компилится, линкуется и работает! Что еще нужно для счастья!
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
26.10.2013, 14:33     Прилинковать SDL к V.S. 2010 #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, что я неправильно делаю? Подскажи пожалуйста
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:48     Прилинковать SDL к V.S. 2010 #39
Вообще ничего не писать пробовали? Здесь пишите? Во второй сроке? Там две настройки с одинаковыми названиями.
Миниатюры
Прилинковать SDL к V.S. 2010  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2013, 14:49     Прилинковать SDL к V.S. 2010
Еще ссылки по теме:

SDL mouse C++
Оптимизация SDL C++
SDL 2. Как правильно прилинковать/подключить к Visual Studio? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:49     Прилинковать SDL к V.S. 2010 #40
SDL какая?
Yandex
Объявления
26.10.2013, 14:49     Прилинковать SDL к V.S. 2010
Ответ Создать тему
Опции темы

Текущее время: 01:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru