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

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

30.07.2013, 22:30. Показов 27503. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
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. Подключил инклуды. 2. Подключил либы (Файлы *.lib) ...

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

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

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

Не по теме:

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

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

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

Добавлено через 2 минуты
Цитата Сообщение от Ryabchik Посмотреть сообщение
SDL-1.2.15
почему не поновее?
0
погромист
 Аватар для coloc
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
31.07.2013, 19:45
Цитата Сообщение от 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
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 20:42
Это у меня просто не компилируется. Не находит:
SDL_SetVideoMode
SDL_HWSURFACE
SDL_DOUBLEBUF
SDL_Flip
0
19 / 20 / 0
Регистрация: 09.01.2013
Сообщений: 168
31.07.2013, 21:04  [ТС]
alsav22, у меня то же самое
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2013, 21:06
А из 14 поста компилируется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2013, 21:06
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru