Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/130: Рейтинг темы: голосов - 130, средняя оценка - 4.82
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
1

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

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

Author24 — интернет-сервис помощи студентам
Доброго всем вечера.
Я знаю, что подобных тем было много, но, справиться с проблемой не могу.
Скачал с оф.сайта все .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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2013, 22:30
Ответы с готовыми решениями:

Прилинковать SDL 2.0.3 к Visual Studio 2010 Express
ребята делал все как написано тут версия сдл 2.0.3 но в конце выдает такое &quot;sdltest.exe&quot;:...

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

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

Прилинковать сервера
Приветсвую всех. У меня два ПК в домене c SQL серверами 2005ЕЕ и express 2008R2 запущены оба под...

47
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
31.07.2013, 21:16 21
Author24 — интернет-сервис помощи студентам
Ryabchik,alsav22, значит у вас обоих вторая версия СДЛ
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 21:23  [ТС] 22
Цитата Сообщение от alsav22 Посмотреть сообщение
А из 14 поста компилируется?
Нет.
_SDL_Quit, _SDL_GetKeyName, _SDL_WaitEvent, _SDL_Init - неразрешенные внешние ...
Ну и _WinMain@16 в функции ___tmainCRTStartup, разумеется.
Но последнее уходит заменой на WinMain

Добавлено через 2 минуты
Цитата Сообщение от coloc Посмотреть сообщение
вторая версия СДЛ
Я скачивал с оф сайта http://www.libsdl.org/.
0
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
31.07.2013, 21:24 23
Цитата Сообщение от Ryabchik Посмотреть сообщение
Я скачивал с оф сайта http://www.libsdl.org/.
Конкретно скажи откуда либу качал? Там есть и 1.2.5 и 2.0 версии. Как я знаю, WinMain требует вторая версия
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 21:26  [ТС] 24
Вот - http://www.libsdl.org/download-1.2.php.
Win32 - Visual C++
Про 2.0 написано - not release version, may be unstable
0
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
31.07.2013, 21:26 25
del
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 21:29  [ТС] 26
Цитата Сообщение от coloc Посмотреть сообщение
del
А что взамен?
0
4 / 4 / 1
Регистрация: 22.09.2012
Сообщений: 12
31.07.2013, 21:43 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 прописать.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 21:54 28
Цитата Сообщение от coloc Посмотреть сообщение
Ryabchik,alsav22, значит у вас обоих вторая версия СДЛ
У меня да, вторая.

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

Добавлено через 4 минуты
Цитата Сообщение от Ryabchik Посмотреть сообщение
Нет.
_SDL_Quit, _SDL_GetKeyName, _SDL_WaitEvent, _SDL_Init - неразрешенные внешние ...
Ну и _WinMain@16 в функции ___tmainCRTStartup, разумеется.
Но последнее уходит заменой на WinMain
У вас линкер ошибки выдаёт. Ещё раз:
Цитата Сообщение от alsav22 Посмотреть сообщение
Ryabchik, там ещё либы под разные платформы, учитывайте это.
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 21:57  [ТС] 29
Цитата Сообщение от alsav22 Посмотреть сообщение
Ryabchik, там ещё либы под разные платформы, учитывайте это.
Ну да, Win32 -> Visual C++
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 22:14 30
А либы для х86 подключили? У меня такие ошибки появляются, если либы для х64 подключить.
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 22:41 32
Тут читали, как среду настроить? http://lazyfoo.net/SDL_tutoria... /index.php
0
5498 / 4893 / 831
Регистрация: 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

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

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

Результат.
Миниатюры
Прилинковать SDL к V.S. 2010  
4
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 23:19  [ТС] 34
alsav22, спасибо вам огромное за помощь. Завтра обязательно попробую
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2013, 00:21 35
Сейчас скачал и подключил SDL 1.2.15 (как описал в 33 посте). Код, из 17 поста, скомпилировался и заработал.
Миниатюры
Прилинковать SDL к V.S. 2010  
2
5498 / 4893 / 831
Регистрация: 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
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
01.08.2013, 17:00  [ТС] 37
alsav22, Все компилится, линкуется и работает! Что еще нужно для счастья!
0
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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:48 39
Вообще ничего не писать пробовали? Здесь пишите? Во второй сроке? Там две настройки с одинаковыми названиями.
Миниатюры
Прилинковать SDL к V.S. 2010  
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:49 40
SDL какая?
0
26.10.2013, 14:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2013, 14:49
Помогаю со студенческими работами здесь

Прилинковать библиотеку
Здравствуйте. Создал приложение MFC, как сделать, чтобы мой exe открывался без VS, на других...

Как прилинковать libgsl?
Добрый день. Сегодня полдня компилировал GNU Scientific Library под Cygwin в XP. В конце концов,...

Подскажите, как прилинковать Excel
Имеется таблица, содержащая поля: Организация, Город, Отрасль, E-mail. На главной форме есть поле...

Как прилинковать dll к проекту?
Пишу программу, но при тесте у других юзеров выяснилось, что для запуска программы требуется...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru