Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка с _di_Interface в Builer 6.0


Автор: srd 22.4.2004, 21:07
Пишу, например, такой код:
Код

ADOTable1->Properties->Item["Unique Table"]->Value = "Table1";

И получаю ошибку
Цитата
[Linker Error] Unresolved external 'System::__linkproc__ __fastcall CheckAutoResult()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|syssupp

И это вылазит во многих ситуациях, когда я пытаюсь что-то сделать с потомками _di_Interface. Думал - баг, скачал и установил Update 4, не помогло. Посоветуйте, как с этим бороться?

Где эта CheckAutoResult() реализована - понятия не имею. Пробовал компилировать с разными сочетаниями опций "Build with packages", "Dynamic RTL", "Debug libraries" - не помогает.

Ещё глюк - иногда, когда пытаюсь что-то компилировать с установленным "Build with packages", линкер начинает выборочно ругаться на конструктор какой-нибудь формы - мол Unresolved external. Переношу тело конструктора из cpp в хедер - компилируется. По какому принципу линкер решает, на какую форму ругаться, а на какую нет, я так и не понял.

Автор: srd 23.4.2004, 21:22
Нашел решение http://www.inteltec.ru/forum/index.php3?subj=prog_rus&msg=000008

Автор: srd 24.4.2004, 21:51
Код

// syssupp1.cpp: Модуль исправления бага от Borland

#pragma inline

#include <system.hpp>

// ensure near is visible to TASM
#if defined(near)
#undef near
#endif

namespace System
{
   #pragma argsused
       void __fastcall CheckSafecallResult(HRESULT hr)
   {
       asm
       {
           //extrn    @System@@CheckAutoResult$qqrv:near - так в Borland
           //call    @System@@CheckAutoResult$qqrv      - так в Borland
           extrn    @System@@CheckAutoResult$qqrl:near  // так должно быть
           call    @System@@CheckAutoResult$qqrl       // так должно быть
       }
   }
}


Автор: Guest 28.8.2004, 15:02
Добавивь следующую функцию в любой из модулей приложения:

namespace System {
void __fastcall CheckSafecallResult(HRESULT hr)
{
return;
}
}

Автор: Guest 28.8.2004, 15:04
Где взять Модуль исправления?
Иле где че прописать!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)