Форумы на Наша-Life
Home user CP  
Календарь событий Найти других пользователей Часто задаваемые Вопросы Поиск  
Автор
Тема
Создать Новую Тему    Ответить
Arrowdodger
(Member)

Зарегистрирован: Mar 2008
Проживает: Russian Federation/
Написал: 46 сообщений

Оценка: 0 Votes

добавление интерфейса
Сообщение #749949
название тем может быть неправильное, т.к. я до конца и не понял что такое интерфейс в сурсе.
суть проблемы:
создал свой класс, теперь надо чтобы экземпляр его был доступен во всех частях кода как, например, engine.
объявил в .h файле свой класс, в конце добавил строчку:
code:extern IMyClass *myclass

заинклудил этот файл в gameinterface.cpp в серверном проекте.
добавил туда по аналогии нужные объявления:
code:IMyClass *myclass = NULL;

затем в DLLInit
code:myclass=new IMyClass;

а также в DLLShutdown что нужно.

собсно создаю новый .cpp файл, инклужу туда cbase.h и при попытке вызвать какойнить метод из моего класса получаю ошибку undeclared idientifier 'myclass'.

покопавшись, в клиентской части добавил аналогичные объявления в cdll_client_int.h и cdll_client_int.cpp. в итоге когда я в созданном cpp файле пишу myclass-> то список мемберов появляется, но ошибка не исчезает.
Old Post 25-07-2008 16:31
Arrowdodger отсутствует Посмотреть данные 'Arrowdodger' Отправить Приватное Сообщение для 'Arrowdodger' Посетить домашнюю страничку Arrowdodger Найти другие сообщения 'Arrowdodger' Добавить Arrowdodger в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #749976
Ну первый вопрос таков: А стоит ли вообще в твоем случае использовать такой подход?

Сурсовые интерфейсы - это абстрактное выражене внешних либ. Т.е. либа представляет собой некий интерфейс, который постоянно остается неизменным. Либа может много раз переписыватся и модифицироватся, но пока ее интерфейс не меняется, она может использоватся без перекомпиляции кода. Это связано с тем, что обновив движок, нужно всего лишь заменить соответсвующуюю длл-ку без перекомпиляции кода клиен-серверных библиотек.

Я очень сомневаюсь, что требуется именно такая функциональность.

Нужен всего-лишь статичный класс? Тогда у тебя должно быть 2 файла - *.срр (в котором ты прописываешь реализацию своего класса и создаешь единственную его копию) и *.h (в котором прописываешь объявление своего класса и экстернишь тот обьект, который был создан в *.срр). Для того чтобы использовать этот статический обьект, нужно всего-лишь проинклюдить свой *.h-файл с обьявлением.

Вообще, очень советую почитать об обьявлениях\определениях и компоновке.
Old Post 25-07-2008 17:31
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Arrowdodger
(Member)

Зарегистрирован: Mar 2008
Проживает: Russian Federation/
Написал: 46 сообщений

Оценка: 0 Votes

Сообщение #756246
Цитата:
Нужен всего-лишь статичный класс? Тогда у тебя должно быть 2 файла - *.срр (в котором ты прописываешь реализацию своего класса и создаешь единственную его копию) и *.h (в котором прописываешь объявление своего класса и экстернишь тот обьект, который был создан в *.срр). Для того чтобы использовать этот статический обьект, нужно всего-лишь проинклюдить свой *.h-файл с обьявлением.

хм...мне нужен статичный класс для сервера и клиента одновременно. быть может если я напишу отдельную длл и буду ее использовать через интерфейсы, то выйдет проще?
Old Post 13-08-2008 09:59
Arrowdodger отсутствует Посмотреть данные 'Arrowdodger' Отправить Приватное Сообщение для 'Arrowdodger' Посетить домашнюю страничку Arrowdodger Найти другие сообщения 'Arrowdodger' Добавить Arrowdodger в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #756323
Включаешь срр-шник в оба солюшона и будет тебе два обьекта - на сервере и на клиенте.

Ну это все пальцем в небо. Не зная сути проблемы очень трудно что-то посоветовать...
Old Post 13-08-2008 12:43
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Arrowdodger
(Member)

Зарегистрирован: Mar 2008
Проживает: Russian Federation/
Написал: 46 сообщений

Оценка: 0 Votes

Сообщение #756331
Цитата:
Включаешь срр-шник в оба солюшона и будет тебе два обьекта - на сервере и на клиенте.

угу, а нужен один.
Цитата:
Ну это все пальцем в небо. Не зная сути проблемы очень трудно что-то посоветовать...

я хотел прикрутить к движку сокеты и иметь возможность отправлять и получать данные в любом месте в коде.

Add:
впрочем мне щас пришла мысля в голову, что и с двумя cpp в разных проектах можно нормально сделать. тем не менее про интерфейсы хотелось бы услышать, т.к. в коде я вообще не нашел место где используются внешние либы.
Old Post 13-08-2008 12:59
Arrowdodger отсутствует Посмотреть данные 'Arrowdodger' Отправить Приватное Сообщение для 'Arrowdodger' Посетить домашнюю страничку Arrowdodger Найти другие сообщения 'Arrowdodger' Добавить Arrowdodger в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #756381
engine - это внешняя либа относительно клиент-серверных библиотек, например. Также и с физикой, звуком, стимом и т.д.

Насчет идеи об прикручивании сокетов... Вообще, идея не шибко хороша. Если идея не вписывается в концепцию движка - то это не тот движок. И это при том, что движок-то остается недоступен, доступен только СДК. С помощью СДК невозможно изменить сути движка, а сетевой код - это один из китов, на которых стоит любой движок. А если идеи выходят за рамки этих базисов, то как говорится, игра уже не стоит свеч.

Вывод. Попытайся найти все функциональные возможности движка в плане работы с сетью. Если твои идеи впишутся в возможности, то все еще возможно. Если же нет - то увы и ах, но ничего из этого не выйдет. Хотя это больше вопрос компетентности, и замечательная проверка умений. Возможно все, главное знать как это сделать.
Old Post 13-08-2008 14:50
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
 
Arrowdodger
(Member)

Зарегистрирован: Mar 2008
Проживает: Russian Federation/
Написал: 46 сообщений

Оценка: 0 Votes

Сообщение #756387
Цитата:
engine - это внешняя либа относительно клиент-серверных библиотек, например. Также и с физикой, звуком, стимом и т.д.

угу, в SDK Base они в папке bin лежат. собсно вопрос заключался в том могу ли я написать свою длл и использовать ее в проекте? если нет - придеться думать.
Old Post 13-08-2008 15:16
Arrowdodger отсутствует Посмотреть данные 'Arrowdodger' Отправить Приватное Сообщение для 'Arrowdodger' Посетить домашнюю страничку Arrowdodger Найти другие сообщения 'Arrowdodger' Добавить Arrowdodger в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #756394
Да, конечно можно. Это уже парафия языка, а не движка, прилинковать ты все что угодно можешь. Даже попробовал для интереса - ноу проблемо.
Old Post 13-08-2008 15:46
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Arrowdodger
(Member)

Зарегистрирован: Mar 2008
Проживает: Russian Federation/
Написал: 46 сообщений

Оценка: 0 Votes

Сообщение #756395
Цитата:
Даже попробовал для интереса - ноу проблемо.
прикольно, можно кратенький гайд? а то по аналогии не выходит.

Поправил Arrowdodger 13-08-2008 в 18:53

Old Post 13-08-2008 15:49
Arrowdodger отсутствует Посмотреть данные 'Arrowdodger' Отправить Приватное Сообщение для 'Arrowdodger' Посетить домашнюю страничку Arrowdodger Найти другие сообщения 'Arrowdodger' Добавить Arrowdodger в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #756399
Ну ща попробую...

Для начала создаем ДЛЛ. В студии клацаем:
File->New->Project->Win 32 Project
Вылазет окошечко, заходим на вкладку Application Settings и в графе Application Type выбираем DLL. Еще чекаем Export Symbols. Жмем финиш.

Создается проект, с котором есть для примера экспортируемый класс, функция и переменная. На этих примерах, думаю будет ясно как все обьявлять.

После пишешь ф-ю какую-нить, обьявляешь ее в хедере и компилишь проект. У тебя создается *.lib и *.dll файлы твоей библиотеки. *.lib суешь в папку со всеми студийными либами, а *.dll в windows\system32. На этом с либой все.

Далее в халвовом коде подключаешь хедер своей либы, и просто юзаешь свою функцию. Да, главное забыл! Нужно в опциях проекта добавить в Linker->Input-> Additional Dependencies имя своей *.lib библиотеки. Компилим. Смотрим на результат.

Такой вот ликбез.
Old Post 13-08-2008 16:05
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Arrowdodger
(Member)

Зарегистрирован: Mar 2008
Проживает: Russian Federation/
Написал: 46 сообщений

Оценка: 0 Votes

Сообщение #756452
Цитата:
У тебя создается *.lib и *.dll файлы твоей библиотеки. *.lib суешь в папку со всеми студийными либами

*.lib можно пихать в папку с либами для СДК? в конце концов пути то в ИДЕ туда тоже прописаны.
Цитата:
а *.dll в windows\system32. На этом с либой все.

а мод запустится на компьютере, на котором нет этой дллки в папке system32? и разве она сначала не ищется в той же директории из которой и процесс запущен?
Цитата:
Да, главное забыл! Нужно в опциях проекта добавить в Linker->Input-> Additional Dependencies имя своей *.lib библиотеки.

а #pragma comment(lib,"имя_либы") не делает то же самое?
Old Post 13-08-2008 18:51
Arrowdodger отсутствует Посмотреть данные 'Arrowdodger' Отправить Приватное Сообщение для 'Arrowdodger' Посетить домашнюю страничку Arrowdodger Найти другие сообщения 'Arrowdodger' Добавить Arrowdodger в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #756454
Да, верно. Я предложил один из путей. Ты попросил гайд, я тебе его дал, вопросы?
Old Post 13-08-2008 18:57
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
romanshuvalov
(Музыкант и разработчик игр)

Зарегистрирован: Jul 2007
Проживает: Россия/Тольятти
Написал: 819 сообщений

Оценка: 35 Votes 35 чел.

Developer Старожил 
Сообщение #757217
вопрос, если позволите, задам я

если созданную дллшку класть не в system32, а куда-нибудь в папку с модом, движок найдёт ее? где ему указать "путь поиска дллшки"?
Роман
Old Post 15-08-2008 21:00
romanshuvalov отсутствует Посмотреть данные 'romanshuvalov' Отправить Приватное Сообщение для 'romanshuvalov' Посетить домашнюю страничку romanshuvalov Найти другие сообщения 'romanshuvalov' Добавить romanshuvalov в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #757223
Ну ее класть нужно либо в директорию где сам hl.exe находится, либо в /bin (в смысле /bin не мода, а там где все engine.dll и пр. находятся) .
Old Post 15-08-2008 21:31
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
romanshuvalov
(Музыкант и разработчик игр)

Зарегистрирован: Jul 2007
Проживает: Россия/Тольятти
Написал: 819 сообщений

Оценка: 35 Votes 35 чел.

Developer Старожил 
Сообщение #757231
и все? больше никуда нельзя?
значит для создания модификации такой вариант не подходит?
Роман
Old Post 15-08-2008 22:12
romanshuvalov отсутствует Посмотреть данные 'romanshuvalov' Отправить Приватное Сообщение для 'romanshuvalov' Посетить домашнюю страничку romanshuvalov Найти другие сообщения 'romanshuvalov' Добавить romanshuvalov в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Все время в GMT . Сейчас 16:42.
Создать Новую Тему    Ответить

Быстрый ответ
Ваше Имя:
Хотите Зарегистрироваться?
Ваш Пароль:
Забыли свой Пароль?
Вы можете оставлять свои комментарии анонимно, просто введя свои имя и оставив пустым поле пароля.
Ваш ответ:

[проверить размер]
[транслит в win] | [?]
[русская клавиатура]

Дополнительно: Подтверждение по E-Mail


Быстрый переход:
 
Оцените эту Тему:
 

Правила форума:
Создание Тем не разрешено
Создание Сообщений разрешено
Создавать Вложения не разрешено
Редактирование Сообщений не разрешено
Коды HTML запрещены
Коды форума разрешены
Смайлики разрешены
Коды [IMG] запрещены