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

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

30.07.2013, 22:30. Показов 25461. Ответов 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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2013, 23:25 2
Цитата Сообщение от Ryabchik Посмотреть сообщение
выбрал \SUBSYSTEM:WINDOWS.
Нужно или консоль выбирать, или проект другой создавать.
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
30.07.2013, 23:36  [ТС] 3
Цитата Сообщение от alsav22 Посмотреть сообщение
проект другой создавать.
Какой другой?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2013, 23:42 4
Win32.
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
30.07.2013, 23:50  [ТС] 5
Цитата Сообщение от alsav22 Посмотреть сообщение
Win32.
Я, собственно, его и создаю

Добавлено через 36 секунд
Выбор консоли ничего не меняет
0
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
31.07.2013, 00:00 6
Попробуй ключи
-lSDLmain
-lSDL
-lkernel32
Если не поможет, то кури http://lazyfoo.net/SDL_tutoria... /index.php
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 05:10 7
Танцы с бубном. Работы, правда, не увидел, но компилируется без ошибок. Попробуйте библиотеку msvcrt.lib прописать в игнорируемые. Одну её. В свойствах проекта есть пункт, где можно прописать игнорирование всех стандартных библиотек, а в другом пункте можно прописать какие. Вот там, где какие.
1
19 / 20 / 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_tutoria... /index.php
Все сделал, как там

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

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

Не по теме:

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

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

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

Добавлено через 2 минуты
Цитата Сообщение от Ryabchik Посмотреть сообщение
SDL-1.2.15
почему не поновее?
0
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 20:42 18
Это у меня просто не компилируется. Не находит:
SDL_SetVideoMode
SDL_HWSURFACE
SDL_DOUBLEBUF
SDL_Flip
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 21:04  [ТС] 19
alsav22, у меня то же самое
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 21:06 20
А из 14 поста компилируется?
0
31.07.2013, 21:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2013, 21:06
Помогаю со студенческими работами здесь

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

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

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

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


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

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