This is topic ActiveX VC++6 in forum Операторский интерфейс SCADA/HMI TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/34/t/000049.html

Posted by Soyuz (Участник № / Member № 2028) on :
 
В комплекте TM6 идёт пример ActiveX-компонента для Visual C++ 5. Но под Visual C++ 6 компонент не компилируется: ошибку выдаёт компилятор midl.exe. Есть ли возможность получить пример ActiveX (исходный текст), компилируемый под Visual C++ 6?
VC++ 6 при компиляции выдает следующее:
Creating Type Library...
tmxlib.idl
oaidl.idl
objidl.idl
unknwn.idl
wtypes.idl
ocidl.idl
oleidl.idl
servprov.idl
urlmon.idl
msxml.idl
rttypes.idl
Error executing midl.exe.
Tmxlib.dll - 1 error(s), 0 warning(s)
Может быть нужно поменять какие-нибудь ключи для midl.

midl установлен, и расположен в папке Bin Visual Studio.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Tmxlib.dsp:
# Microsoft Developer Studio Generated Build File, Format Version 6.00. Это 6-я версия

Пример компилируется midl'ом 6-й версии без специальных ключей.
Попробуйте вручную скомпилировать midl tmxaux.idl и сообщите результат - если есть ошибка, она должна быть указана явно - не найден файл ххх и т.п.
 
Posted by Soyuz (Участник № / Member № 2028) on :
 
Я еще вчера скомпилировал *.idl файлы. Но как построить сам ActiveX? Выдает все те же сообщения. Возможно нужно указать в среде Visual C++ 6 путь к midl, раз он его не может запустить!
Спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Судя по всему, Вы передали нам не полную диагностику. Пришлите, пожалуйста, на адрес техподдержки полный вывод компилятора, от командной строки.
А пока попробуйте создать простенький ActiveX с использованием ATL, если получится - посмотрите разницу в проектах.
 
Posted by Soyuz (Участник № / Member № 2028) on :
 
С Новым Годом! И продолжая...
У меня таки получилось построить dll, правда только в Debug конфигурации. При этом в настройках проекта, в закладке MIDL я предварительно все очистил (так как и в пустом ActiveX с использованием ATL).
Почему Release конфигурации не проходят? Вот строки ошибки:
Generating Code...
Linking...
Creating library ReleaseUMinDependency/Tmxlib.lib and object ReleaseUMinDependency/Tmxlib.exp
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
ReleaseUMinDependency/Tmxlib.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

И еще возникла одна ошибка связанная с функцией _stprintf(). Я заменил ее на sprintf().

HRESULT CSpin::OnDraw(ATL_DRAWINFO& di)
{
// Draw something to output to printer..
RECT& rc = *(RECT*)di.prcBounds;
HBRUSH br = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
FillRect(di.hdcDraw,&rc,br);
DeleteObject(br);
//_TCHAR buf[48];
//_stprintf(buf,"%d",int(m_val.f));
char buf[48];
sprintf(buf,"%d",int(m_val.f));
DrawText(di.hdcDraw,(const unsigned short *)buf, -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
return S_OK;
}
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. По ошибке с линковкой сказать точно пока ничего не можем, ещё раз внимательно смотрите отличия настроек Вашего проекта от tmxlib.
2. Выберете конфигурацию ReleaseMinDependency, т.е. без unicode (ошибка связанная с функцией sprintf() связана именно с этим).
 
Posted by Дмитрий Юрьевич М. (Участник № / Member № 1930) on :
 
Скажите, пожалуйста, уважаемая техническая поддержка. Как заставить работать Active-X, написанный в Visual Studio 2005? Даже пустой Active-X (только что созданный проект) при добавлении на экран TraceMode выкидывает исключение, после чего TM закрывается. Не работают все конфигурации (release, debug, со статической линковкой и без, с юникодом и без оного). Что делать? Active-X, созданные в Visual Studio 6.0 работают. Но купить лицензионную студию уже не представляется возможным. Что нам делать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Есть подозрение, что причинами возникновения подобной ошибки могут являться разногласия в интерфейсах, задействованных при создании ActiveX приложений. Мы работаем в этом направлении.
Дле текущего решения рекомендуем использовать Visual Studio до версии 2003 с компонентами MFC. Для работы с Visual Studio 2005 используйте компоненты ATL.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2