powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
25 сообщений из 68, страница 2 из 3
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436125
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Нафига v120_xp? Если стартует и без него? Чтоб читать ругань компилятора про deprecated?
Я так понимаю про C++, оно либо сразу не стартует, либо если стартует (а у меня стартует), то уже работает как часики.
Или может вдруг внезапно где-то скрашить?
Если стартует то можно и без него, проблемы только на старте могут быть. Но ругань компилятора с этим никак не связана. Были бы проблемы - не откомпилировал, а тут просто предупреждения о потенциально опасных местах в коде.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436132
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНо ругань компилятора с этим никак не связана. Были бы проблемы - не откомпилировал, а тут просто предупреждения о потенциально опасных местах в коде.
Да, но без _xp опции этих предупреждений нет. И то о чем предупреждают в МОЕМ коде тоже НЕТ. Видимо _xp цепляет то, что "потенциально опасно", а положительного толка от _xp в моем случае видимо ничего нет.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436135
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Dima TНо ругань компилятора с этим никак не связана. Были бы проблемы - не откомпилировал, а тут просто предупреждения о потенциально опасных местах в коде.
Да, но без _xp опции этих предупреждений нет. И то о чем предупреждают в МОЕМ коде тоже НЕТ. Видимо _xp цепляет то, что "потенциально опасно", а положительного толка от _xp в моем случае видимо ничего нет.
Это происки маркетологов MS и не более того. Проблема как была так и осталась, а сообщать или нет о ней это маркетинг.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436143
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

У тебя должна использоваться msvcr120.dll - можешь проверить processexplorer'om

Нужно носить с собой рантайм от студии 2013
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436159
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglУ тебя должна использоваться msvcr120.dll - можешь проверить processexplorer'om

Нужно носить с собой рантайм от студии 2013
кому должна?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436177
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglУ тебя должна использоваться msvcr120.dll - можешь проверить processexplorer'om
Если смотреть hex-ом то она упомянается:
Код: plaintext
1.
2.
t@std@@QAE@H@Z C♣?uncaught_exception@std@@YA_NXZ э☺?_Getgloballocale@locale@st»
w♥_itow_s /♣_vsnwprintf MSVCR120.dll  Ф♥_lock ♦♣_unlock .☻_calloc_crt о☺__dllo»


Но на тестовом XP ее поиском не нашел.
А dll запускается.
А разве /MT не подсасывает "необходимое"?

Но проблемы уже возникли. На 2003 dll вроде стартовала (несколько ф-ций прошли, я лог запустил), а потом бац,
fxssvc.exe выдала в журнал Er. 0xc000001D, fault module _my.dll, загрузка службы факсов соотв. висит.
Вторая ошибка в журнале от самой dll, типа fault address 00001d5e.

И я вот думаю, это "чет не хватает" или уже проблемы в самом коде, на сервере, даже на 2012R2 я ее еще не обкатывал.
Там разница в том, что на XP/Win10 только один девайс может быть "активным", а на сервере - много (условия использования MSFax).
Но я вроде MS-логику и код в этом пункте не нарушал, там под каждый девайс свой поток.

Ну для начала думаю надо xp_120 компильнуть и посмотреть поможет ли это запуску на Win2003.
А если не поможет, то делать тест на 2012R2 и уже копаться в коде если там будет то же самое.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436180
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77А разве /MT не подсасывает "необходимое"?
но не гарантирует ничего - говорил уже об OpenMP в частности

Дмитрий77Если смотреть hex-ом то она упомянается:
а если гланды через анус не удалять, а напустить утилиту анализа импорта?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436182
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

если код - "не секретный" - выложи.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436190
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77,

если код - "не секретный" - выложи.

Свой выкладывать не буду.
Но "оригинал" из MS SDK я выкладывал еще в январе, когда был в начале пути.
Из него в принципе структура ясна и документация есть (если просто понять что там используется).
20127697
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436192
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Но проблемы уже возникли. На 2003 dll вроде стартовала (несколько ф-ций прошли, я лог запустил), а потом бац,
fxssvc.exe выдала в журнал Er. 0xc000001D, fault module _my.dll, загрузка службы факсов соотв. висит.
Вторая ошибка в журнале от самой dll, типа fault address 00001d5e.

И я вот думаю, это "чет не хватает" или уже проблемы в самом коде, на сервере, даже на 2012R2 я ее еще не обкатывал.
Там разница в том, что на XP/Win10 только один девайс может быть "активным", а на сервере - много (условия использования MSFax).
Но я вроде MS-логику и код в этом пункте не нарушал, там под каждый девайс свой поток.

Ну для начала думаю надо xp_120 компильнуть и посмотреть поможет ли это запуску на Win2003.
А если не поможет, то делать тест на 2012R2 и уже копаться в коде если там будет то же самое.

xp_120 на 2003-м не спасло. Вылетает (но не в самом начале!!!), где и на чем пока ХЗ.
Пойду для начала ситуацию на 2012R2 гляну.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436194
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

"оригинал" собирается со статическим рантаймом без проблем
зависимости - kernel32.dll,advapi32.dll
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436204
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77,

"оригинал" собирается со статическим рантаймом без проблем
зависимости - kernel32.dll,advapi32.dll
Ну и неоригинал видимо тоже.

На 2012R2 у меня все запустилось, хотя с первого раза не получилось. Кинул папку с dll на рабочий стол админа, оттуда зарегил, служба факсов отмочила Не удалось загрузить dll (Err5-нет прав доступа, с чего бы это). Из другой папки все завелось.
По крайне мере фу, не глобал error в коде.

А 32-битнику на Win2003 чего-то не нравится.
FaxDevVirtualDeviceCreation -отрабатывает
FaxDevInitialize-отрабатывает
(и девайсы в реестре образуются как положено)

А дальше должно быть в логе
---fnFaxLineCallback (Device=0) Enter---

Там кода то нету:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
VOID CALLBACK
FaxLineCallback(
                IN HANDLE     FaxHandle,
                IN DWORD      hDevice,
                IN DWORD      dwMessage,
                IN DWORD_PTR  dwInstance,
                IN DWORD_PTR  dwParam1,
                IN DWORD_PTR  dwParam2,
                IN DWORD_PTR  dwParam3
               )
{
        std::wstring buffer;
        std::wstringstream to_buffer;

        // pdwDeviceId is the pointer to the virtual fax device identifier
        LPDWORD   pdwDeviceId;
        // hThread is a handle to the thread to watch for an incoming fax transmission
        HANDLE    hThread;

        WriteDebugString(L"---fnFaxLineCallback (Device=%d) Enter---\r\n", hDevice - NEWFSP_DEVICE_ID_PREFIX);
        WriteDebugString(L"   fnFaxLineCallback (Device=%d): Receive=%d;Send=%d\r\n", hDevice - NEWFSP_DEVICE_ID_PREFIX, (dwParam1 != 0), (dwParam2 != 0));
...



До первого в этой ф-ции WriteDebugString дело не доходит (а эта строчка по сути первая) , из журнала 2003-го только ясно, что 00001d5e is fault address, т.е. ничего не ясно.
И вот с чем это связано: рантаймы или таки в коде что не так.
Надо видимо добавить еще дебага, чтоб хоть понять доходит ли дело до вызова этой ф-ции.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436205
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77До первого в этой ф-ции WriteDebugString дело не доходит (а эта строчка по сути первая)
пара конструкторов - не считается?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436213
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77До первого в этой ф-ции WriteDebugString дело не доходит (а эта строчка по сути первая)
пара конструкторов - не считается?
А ты прав однако,
Код: plaintext
1.
2.
3.
        WriteDebugString(L"---fnFaxLineCallback Enter---\r\n");
        std::wstring buffer;
        std::wstringstream to_buffer;


Первая строка проходит, а на "C++ конструкторах" очевидно и вылетает в мир иной.
В первых двух ф-циях эти штуки отсутствуют, поэтому они и проходят.
(на XP почему-то и дальше все гладко)
И какое направление мысли? Эти std::string вы мне сами насоветовали, еще раз корячиться со строками не хочу.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436215
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77И какое направление мысли?спрошу на всякий случай. Твои длл в релизе ведь собраны, да?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436217
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

Да, в Release, при этом изначально был Debug. Я тут пытался эту разницу прояснить как-то, но ответа не получил. И так понял, что если я Release создаю из Debug, то это вообще одно и то же будет.

У MS в оригинальном проекте все операции со строками построены на StringCchCopy с ручным выделением памяти.
Типа вот такие простыни по каждому случаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    // Set the completion packet's routing string to RoutingInfo
	pFaxDevStatus->RoutingInfo = NULL;
    if (RoutingInfo != NULL) {
      pFaxDevStatus->RoutingInfo = (LPWSTR)((UINT_PTR)pFaxDevStatus + upStringOffset);
      hr = StringCchCopy(pFaxDevStatus->RoutingInfo, (lstrlen(RoutingInfo) + 1), RoutingInfo);
      if (hr != S_OK)
      {
        WriteDebugString(L"StringCchCopy failed, hr = 0x%x for pFaxDevStatus->RoutingInfo\r\n", hr);
      }
      upStringOffset += (lstrlen(RoutingInfo) + 1) * sizeof(WCHAR);
    }

Еще и так понимаю с ручным MemAllocMacro(dwSize); всякий раз

Ну, я понимаю что это "родные API".
И несмотря в общем-то логическую простоту да и в общем-то немногочисленность действий,
переписывать все еще раз (с учетом того что весь этот string-маразм в общем-то уже отлажен) - это сидеть тупо вешаться.
И понятно, что StringCchCopy + LPWSTR это то что MS "уважает и пропускает", и рантаймы не нужны.
Но это времени уйдет еще вагон а прирост интеллекта =zero.

Где надо было, я и возился с этими StringCchCopy.
А свои внутренние string-комбинации я делал через std::wstring buffer + std::wstringstream
и не в первый раз их использую.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436218
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77И так понял, что если я Release создаю из Debug, то это вообще одно и то же будет.для дебага и для релиза рантаймы разные нужны, соответствующие. Релизная сборка не содержит отладочной информации и некоторых отладочных костылей. Ну и оптимизации все проведены, которые в дебаге отключены.
На первый взгляд, у тебя наблюдается отличие в рантаймах. std::wstring зовётся не оттуда, откуда ты думаешь. А на хрюше случайно получилось, что звалось откуда надо. Подложи в папку со своей dll рантайм от своего компилятора, вдруг повезёт)

P.S. Это та самая картина, которой нас MasterZiv постоянно пугает уже который год, когда про dll рассказывает, кмк ))
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436224
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

да фигня какая-то
>Подложи в папку со своей dll рантайм от своего компилятора, вдруг повезёт
не повезло, без изменений

Психанул, скомпилировал в /MD, установил Redist.2013 на Win2003.
Хоть с v120_xp, хоть без него ни фига не заводится

std::wstring buffer;
std::wstringstream to_buffer;
cъело,
а при попытке чего то записать в этот самый buffer/to_buffer очевидно быстренько загнулось, больше негде.
Снес Redist.2013 с Win2003 пока систему не загадил.

Здесь похоже 2 варианта:
1) сидеть-вычищать все std::wstring / std::wstringstream и менять на StringCchCopy/Cut тогда судя по всему / работать будет
(работы на месяц вперед)
2) Бухнуть в 2005 студию но уже проблемы, напр.
OVERLAPPED ov;
ov = {};
там почему-то не компилируется
и большая проблема с отсутствием там x64.

Ну еще есть вариант забить на XP/2003, но чет я уже за Висты и 7-ки не очень-то уверен с таким бардаком.
И обидно забивать из-за каких-то компиляторов/рантаймов, потому что поддерживать мне по инерции не шибко тяжело, а наработок как бы вагон.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436238
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychP.S. Это та самая картина, которой нас MasterZiv постоянно пугает уже который год, когда про dll рассказывает, кмк ))
готовить аккуратно надо - и нечего бояться

inprocess COM и плагины разнообразные - ведь работают,
да и dll в процессы внедряются, хуки работают
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436239
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Эти std::string вы мне сами насоветовали, еще раз корячиться со строками не хочу.
Нет, брат, с таким настроением ты слона не продашь! (с)
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436366
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych Релизная сборка не содержит отладочной информации и некоторых отладочных костылей.


Релизная сборка может содержать, а может и не содержать отладочную информацию.

egorychНа первый взгляд, у тебя наблюдается отличие в рантаймах. std::wstring зовётся не оттуда, откуда ты думаешь. А на хрюше случайно получилось, что звалось откуда надо. Подложи в папку со своей dll рантайм от своего компилятора, вдруг повезёт)

P.S. Это та самая картина, которой нас MasterZiv постоянно пугает уже который год, когда про dll рассказывает, кмк ))

Как бы проблема в том, что нужно очень чётко понимать, что делать можно, а что нет, когда так делаешь, и очень кропотливо отслеживать весь код. Новичкам это вообще не объяснить.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436411
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77сидеть-вычищать все std::wstring / std::wstringstream и менять на StringCchCopy/Cut возьми код std::wstring и wstringstream, скопируй себе, помести его вместо std в mystd и тогда тебе придётся заменить по всему проекту только название пространства имён, зато ты будешь уверен, что берётся именно тот wstring, который тебе надо.

А зачем тебе x64 для работы с факсом, можешь рассказать, кстати?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436415
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivРелизная сборка может содержать, а может и не содержать отладочную информацию.это правда, но объяснять ТС ещё и это мне не хочется, да ему это пока и не нужно
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436425
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКак бы проблема в том, что нужно очень чётко понимать, что делать можно, а что нет, когда так делаешь, и очень кропотливо отслеживать весь код. Новичкам это вообще не объяснить.ну и что теперь, новички больше не смогут стать "не новичками"? Конечно категорично запретить проще, чем объяснить.

обходной вариант, когда без общего рантайма не обойтись: сделать свою рантайм-библиотеку

задефайнить используемые функции на "из своей dll", которая уже компонуется со статической линковкой
или даже просто указать компоновщику lib-файл к своей dll с требуемыми функциями, вместо либ рантайма

обычно для проектов это десяток-другой функций, вполне посильная задача

PS: Дмитрий77, например, для TotalComander есть плагин для просмотра импорта у файлов
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436560
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)MasterZivКак бы проблема в том, что нужно очень чётко понимать, что делать можно, а что нет, когда так делаешь, и очень кропотливо отслеживать весь код. Новичкам это вообще не объяснить.ну и что теперь, новички больше не смогут стать "не новичками"? Конечно категорично запретить проще, чем объяснить.

0) категорично запрещал не я.
1) да, проще. и программы в итоге будут правильнее.
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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