ой да я все в одном проекте делаю убирать все лишнее лень сейчас создал новый Но все-таки опять ошибка: 1 C:\Program Files\Dev C++\Dev-Cpp\myproj\lib.c In file included from lib.c 4 C:\Program Files\Dev C++\Dev-Cpp\myproj\lib.h syntax error before string constant C:\Program Files\Dev C++\Dev-Cpp\myproj\Makefile.win [Build Error] [lib.o] Error 1
Добавлено (10.09.2012, 13:48) --------------------------------------------- Еще почему то после сборки при запуске gm какой то файл dat требует посмотрел другие библиотеки к gm, там везде dat может это dev c++ не дает?
Сообщение отредактировал Maxaon - Понедельник, 10 Сентября 2012, 13:49
Сейчас попробывал код lib.h и lib.c Ошибку выдает: 1 ... myproj\A.c In file included from lib.c 4 ... myproj\lib.h expected constructor, destructor, or type conversion before '(' token 4 ... myproj\lib.h expected `,' or `;' before '(' token 3 ... myproj\lib.c expected constructor, destructor, or type conversion before '(' token ...myproj\lib.c expected `,' or `;' before '(' token ...myproj\Makefile.win [Build Error] [lib.o] Error 1
Я пробую написать набор функций для импортирования в game maker. Функции писал ради эксперемента. Но тут возникли 2 проблемы: 1.я недостаточно знаю с++(пока что) 2.следствие из первого Пользуюсь комписятором Dev C++. При создании проекта dll он создает два файла: А.cpp и A.h. В первом написан такой код(писал не я, а сам заварганился):
Code
/* Replace "dll.h" with the name of your header */ #include "dll.h" #include <windows.h> using namespace std;
DllClass::DllClass() {
}
DllClass::~DllClass () {
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break;
case DLL_PROCESS_DETACH: break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break; }
/* Returns TRUE on success, FALSE on failure */ return TRUE; }
Честно говоря плохо понимаю в чем здесь суть, но код прочитать могу Для чистоты выложу еще файл h:
class DLLIMPORT DllClass { public: DllClass(); virtual ~DllClass(void);
private:
};
#endif /* _DLL_H_ */
Вообщем 1.вопрос заключается в том куда вставить свою функцию Про конструкторы и деструкторы я еще не проходил поэтому не представляю как с ними работать Но сам я пробывал заварганить функцию в конце файла cpp в h конечно же я не стал пихать 2.В справке написан пример на дельфи Там написано так:
Code
library MyDLL;
uses SysUtils, Classes;
function MyMin(x,y:double):double; cdecl; begin if x<y then Result := x else Result := y; end;
var res : array[0..1024] of char;
function DoubleString(str:PChar):PChar; cdecl; begin StrCopy(res,str); StrCat(res,str); Result := res; end;
exports MyMin, DoubleString;
begin end.
Меня интересует строчка cdecl. Вроде там упоминается что надо исп. либо cdecl либо stdcall. Но что это такое я не понимаю. Пробывал так сделать, но выдает ошибку. Решил сделать так, пример:
Code
_cdecl double SUM(double a,double b) { return a+b; }
Это я в сети нашел: _cdecl и _stdcall но опять же что это?
Сообщение отредактировал Maxaon - Понедельник, 10 Сентября 2012, 13:11
TLT, Абсолютно согласен. На мой взгляд самый достойный кандидат. И на это есть сие достойный аргумент: за 1,75 года набрать под 3000 сообщений! получить 2 награды да и сама репутация 1800, уже о многом говорит На мой взгляд один из самых активных пользователей, так сказать настоящий патриот gсупа
LisTen, вообщем решил все-таки разобраться чего ты хочешь. полазил в примере нашел то, что ты искал сейчас распишу...
Добавлено (10.09.2012, 00:54) --------------------------------------------- Там есть объект obj_window там в событии криэйт определена переменная хх как ширина окна дальше смотрим в событии рисования этого же объекта видим что в 9 строке написана функция рисования спрайта она рисует ч учетом перемнной хх, т.е. в ширину окна т.к. если посмотреть на спрайт то можно увидеть что у него толщина всего 1пиксель Там же, если посмотреть снизу можно увидеть рисование кнопок да и ктомуже чать кода прокоментирована на английском, но понять можно очем(базы 6 класа хватит)
которые учат С++ меньше двух лет в расчет не берут...
я о с++ услышал 2 года назад) а сейчас им балуюсь только думаю в колледже скоро будет, тогда и начну учить как следует) а пока мне мощности гмл хватает)
denis123hm, ну давай выкладывай. пойду продам схожу, процент полагается) шутка) выложи, мне делать нефиг поиграю) только чтобы враги бегали а не стояли)
Qvant, а точно) я так еще не пробывал, но мне безразницы хотя бы потому что у меня есть свой проект и в этой игре я не вижу ничего привлекательного потому как над этой игрой еще работать и работать)
denis123hm, Помню у меня такая же проблема была я че только не делал, весь код перерыл! Оказалось что спрайты отцентрированы поразному. Посмотри в спрайте "влево" такие же ли координаты центровки спрайта "вправо"
Добавлено (09.09.2012, 13:03) --------------------------------------------- А игра куль только у тебя муравьи не ходят а бегают на месте как сделаешь- выложи. я поиграю)
Сообщение отредактировал Maxaon - Воскресенье, 09 Сентября 2012, 13:01
Я видел пример измененине окна gm без каких либо dll.Но утерял пример.Есть какие нибудь статьи по изменению окна. Изменение окна имеется виду вот как например папка виндовс и мак ос.
Я вас отлично понял. И написал код в соотвествии с вашими требованиями
кароче вот вам полноценная игра: в step scheta=0;schetb=0;money=100; do{ a=get_integer('Загадай число от 0 до 10', '') numb=irandom(10); if a=numb {show_message('Ты крутой'); money+=10; scheta+=1} else {show_message('You lose'); money-=10; schetb+=1} if show_question('Продолжим играть в мега игру?') {break} else game_end() } until(money>=10)
if money<=0 game_end()
Добавлено (09.09.2012, 02:19) --------------------------------------------- Это какбэ гмл, но я думаю всем пофиг
Сообщение отредактировал Maxaon - Воскресенье, 09 Сентября 2012, 02:18