Консультация № 55530
15.09.2006, 12:21
0.00 руб.
0 7 1
Здравствуйте. VC6 есть ли различия в компиляции на платформах Win9x и WinNT и, как скомпилировать на NT для Win98

Обсуждение

Неизвестный
15.09.2006, 14:14
общий
По-моему, если вы не используете API-функций, специфичных для NT, программа должна работать и под 98. Хотя может быть я и ошибаюсь... Не проверял.
Неизвестный
15.09.2006, 14:43
общий
это ответ
Здравствуйте, vanya!
В MSDN ясно написано что поддерживается и как в каких виндах (обычно снизу, хотя рекомендую читать справку полностью, в смысле по каждой конкретной апи).
Еще желательно отказаться от юникода, хотя полностью не обязательно. При создании потоков обязательно передавать параметр возврата (в НТ можно null) и еще куча всего...
Большинству программ под Win32 абсолютно все-равно, где исполняться.
Неизвестный
15.09.2006, 20:42
общий
Можно статью,У меня при запуске на 98 после Xp программу в какой то момент выбрасывает с неопределенной ошибкой, а при запуске VC перебирает проект...UNICODE я не люблю хотя стоит comdef.h для работы с variant (и для dll VBA тоже), есть класс для ADODB 2.1, есть поток фоновый, с ним работающий - принимает this вызывающего класса (форма), возвращает 0?
Неизвестный
18.09.2006, 06:52
общий
Если у вас есть исходный текст всего проекта, то можно попробовать скомпилировать программу в отладочном варианте (Debug). Скомпилированная таким образом программа должна дать больше информации об ошибке. Ещё можно попробовать запустить программу в пошаговом режиме и найти строку, вызывающую ошибку...
Неизвестный
18.09.2006, 18:16
общий
debug версия вернула:filetxt.cpp line 166 assertionfail- но это, у меня, только из процедуры записи ошибки (в файл).Вообще выходит из программы после вывода "второго сообщения", собрана на XP вып. на 98 (не наоборот)try{ ////////////////////////////////////////////////////////////// strcpy(szSplashMsg,"Создание подключения"); // 3 ::SendMessage(pfrmS->m_hWnd, WM_COPYDATA, 0, (LPARAM) &cd); ::UpdateWindow(pfrmS->GetSafeHwnd()); ////////////////////////////////////////////////////////////// m_pConnection.CreateInstance( __uuidof( ADODB::Connection ) ); szCnt.Format( "Provider=Microsoft.Jet.OLEDB.4.0;" "Data Source=%s;" "Jet OLEDB:Database Password=%s;" "Persist Security Info=False", m_dbname, m_dbpwd); m_pConnection->CursorLocation = ADODB::adUseClient; m_pConnection->Open(_bstr_t(szCnt), _bstr_t(""), _bstr_t(""), ADODB::adOpenUnspecified); ////////////////////////////////////////////////////////////// strcpy(szSplashMsg,"Подключение таблицы 1"); // 4 ::SendMessage(pfrmS->m_hWnd, WM_COPYDATA, 0, (LPARAM) &cd); ::UpdateWindow(pfrmS->GetSafeHwnd()); ////////////////////////////////////////////////////////////// m_pRecordset1.CreateInstance( __uuidof ( ADODB::Recordset )); m_pRecordset1->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection)); m_pRecordset1->CursorLocation = ADODB::adUseClient; m_pRecordset1->Open( "Таблица 1", _variant_t((IDispatch*)m_pConnection), ADODB::adOpenKeyset, ADODB::adLockOptimistic, ADODB::adCmdTable ); m_pRecordset2.CreateInstance( __uuidof ( ADODB::Recordset )); m_pRecordset2->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection)); m_pRecordset2->CursorLocation = ADODB::adUseClient;
Неизвестный
19.09.2006, 06:21
общий
Во-первых, советую всё-таки посмотреть что же за ASSERT находится в этой 166 строке файла filetxt.cpp, возможно корень ошибки всё-таки там.Во-вторых, если вам известно примерное местоположение ошибки, попробуйте поставить там точку останова (breakpoint) и запустить программу. После того как программа будет прервана - можно будет исполнять её построчно. Заметьте на какой строке программа вываливается с ошибкой. Постарайтесь понять причину. Куски исходного текста рядом со строкой 166 и найденной поместите сюда или задайте новый вопрос.К сожалению, я писал очень мало Windows-программ, поэтому скорее всего помочь не смогу.
Неизвестный
19.09.2006, 20:21
общий
assert для stdiofile... может проще подключиться через msadodc.ocx,или это тема вопроса?
Форма ответа