Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Консоль в DLL / 14 сообщений из 14, страница 1 из 1
15.02.2013, 22:31
    #38153607
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
При вызове функции из DLL, по замыслу архитектора, должна открываться консоль.
В ЕХЕ-проекте все работает, в ДЛЛ тоже самое не хочет. Даже не компилируется, пишет ошибки.
Экзэмпл из ЕХЕ- проекта
Код: plaintext
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.
#include <windows.h> 
#include <stdio.h>
#include <io.h>
#include <fcntl.h>

BOOL CreateConsole(void)
{
  FreeConsole(); //на всякий случай
  if ( AllocConsole() )
  {
    int hCrt = _open_osfhandle((long)
    GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
    *stdout = *(::_fdopen(hCrt, "w"));
    ::setvbuf(stdout, NULL, _IONBF, 0);
    *stderr = *(::_fdopen(hCrt, "w"));
    ::setvbuf(stderr, NULL, _IONBF, 0);
    return TRUE;
  }
  return FALSE;
}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  CreateConsole();
  printf("WinMain with Console test\n");

  MSG msg;
  while (GetMessage(&msg, NULL, 0, 0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg); 
  }
  return TRUE;
}


Ээто все работает, но в ЕХЕ. VS 2010


"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
15.02.2013, 22:35
    #38153612
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
Да,естественно, в ДЛЛ main заменена на др. функцию.
...
Рейтинг: 0 / 0
15.02.2013, 22:36
    #38153613
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
YUBAДаже не компилируется, пишет ошибки.приведите здесь их текст, пожалуйста
...
Рейтинг: 0 / 0
15.02.2013, 22:50
    #38153631
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
Паганель, для начала. Уже только добавление windows.h вызывает ошибки


Ошибка 1 error C2872: IServiceProvider: неоднозначный символ c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h 96
Ошибка 2 error C3699: *: это косвенное обращение невозможно использовать для типа "IServiceProvider" c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h 96
Ошибка 3 error C2371: IServiceProvider: переопределение; различные базовые типы c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h 103
Ошибка 4 error C2872: IServiceProvider: неоднозначный символ c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h 120
Ошибка 5 error C2872: IServiceProvider: неоднозначный символ c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h 241
Ошибка 6 error C2872: IServiceProvider: неоднозначный символ c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h 251
Ошибка 7 error C2872: IServiceProvider: неоднозначный символ C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\urlmon.h 6459
Ошибка 8 error C2872: IServiceProvider: неоднозначный символ C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\urlmon.h 6461

В тоже время, без windows.h AllocConsole() не распознается. Явно этих хидер файлов в проектк нет.
...
Рейтинг: 0 / 0
16.02.2013, 20:18
    #38154147
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
В общем, так.
VS 2010 Exp. С++
Создаем пустой проект библиотеки классов. Компилируем его. Ошибок нет. Внешних зависимостей нет вообще. Ничего вообще не пишем.
Пишем #include <Windows.h> или
Код: plaintext
1.
2.
3.
extern "C" {
#include <Windows.h>
}

Появляется масса ошибок.
И это в пустом проекте.
Ранее функционал из первого топика прекрасно уживался со всем, в т.ч. с проектами WinForm.
...
Рейтинг: 0 / 0
16.02.2013, 20:28
    #38154158
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
YUBAСоздаем пустой проект библиотеки классов.

Что такое "библиотека классов"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.02.2013, 21:10
    #38154179
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
Dimitry SibiryakovЧто такое "библиотека классов"?Та-же Dll содержащая классы доступные извне. Так это называется в VS2010 по русски при создании проекта. И компилируется как DLL.
Я не в курсе, чем при создании это отличатся (в смысле настроек проекта) от динамической или стат билиотек, но наверно отличаются, если MS выделила это в отдельный проект.
...
Рейтинг: 0 / 0
17.02.2013, 00:11
    #38154292
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
YUBADimitry SibiryakovЧто такое "библиотека классов"?Та-же Dll содержащая классы доступные извне.Значит это "не та-же" DLL.
Скорее всего ты путаешь windows DLL, с .net dll.
...
Рейтинг: 0 / 0
17.02.2013, 18:21
    #38154746
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
[quot White OwlЗначит это "не та-же" DLL.
Скорее всего ты путаешь windows DLL, с .net dll.[/quot]Да, спасибо, это так.
Заодно испортил С++, в поисках ошибки "отредактировав" один из системных h-файлов. Переустановил.
А вот классы перестали определяться. Пишем в DLL - Class abc - ошибка. Наверное, либо пенье , либо пляски. :)
Раньше с MS VS C++ дела не имел, как-то больше с Borland 5, но давно. Листаю Хортона.
...
Рейтинг: 0 / 0
17.02.2013, 19:03
    #38154772
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
YUBAРаньше с MS VS C++ дела не имел, как-то больше с Borland 5

Чисто для протокола: у Borland ключевые слова С++ тоже регистрочувствительны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.02.2013, 20:34
    #38154836
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
Dimitry SibiryakovЧисто для протокола: у Borland ключевые слова С++ тоже регистрочувствительны.Да, конечно, у всех С/С++ это одинаково. Borland был ближе к ANSI чем MS. Тот же Хортон пишет, что МS многое отличается от ANSI.
...
Рейтинг: 0 / 0
17.02.2013, 20:52
    #38154853
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
YUBAДа, конечно, у всех С/С++ это одинаково.
Тогда чего ж ты удивляешься, что "Class abc" не компилируется?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.02.2013, 21:23
    #38154870
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
Dimitry Sibiryakov, там нормально все, в топике м.б. и ошибка вышла. У меня не получилось класс добавить в DLL. В обычной-то проге все ОК. В проекте под библиотеку классов тоже без проблем. А здесь заколдобило - класс добавляется, нет консоли, есть консоль -классы исчезли. Ни фига не понимаю. :(
Понятно, что я в этой МS VS С++ что-то не понимаю.
...
Рейтинг: 0 / 0
17.02.2013, 22:46
    #38154938
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Консоль в DLL
YUBAВ общем, так.
VS 2010 Exp. С++
Создаем пустой проект библиотеки классов. Компилируем его. Ошибок нет. Внешних зависимостей нет вообще. Ничего вообще не пишем.
Пишем #include <Windows.h> или
Код: plaintext
1.
2.
3.
extern "C" {
#include <Windows.h>
}

Появляется масса ошибок.
И это в пустом проекте.
Ранее функционал из первого топика прекрасно уживался со всем, в т.ч. с проектами WinForm.

Ты что то совсем не так делаешь, все должно быть ок.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Консоль в DLL / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]