typedef HRESULT ((__import *DllRegisterSrv)())
DllRegisterSrv RegFunc = NULL;
Handle DLL = LoadLibrary("cfx32.ocx");
if(!DLL) return;
RegFunc = (DllRegisterSrv*)GetProcAddress(DLL, 'DllRegisterServer');
if(!RegFunc) return;
RegFunc();
ChartFX на C++ Builder 6
Данная тема однажды подымалась здесь на форуме, но ответа не последовало. Столкнулся с этой проблемой и сам, а разобраться в одиночку займёт непозволительно много времени.
Собственно, проблема:
Создал Application с использованием ChartFX. При компиляции без птички "Build with runtime packages" в свойствах проекта выдаёт "Unknown interface". Если птичка установлена, то экзешник запускается только на моей машине, а на других выдаёт ошибку "Класс незарегистрирован".
Если писать #import "cfx32.ocx" в Main.cpp, то компилятор находит кучу ошибок в cfx32.tli и cfx32.tlh.
Подскажите, пожалуйста, как сделать так, чтобы экзешник запускался на любой машине?
Спасибо.
Необходимо зарегистрировать компонент прежде чем использовать его в приложении.
Цитата: kot_
Необходимо зарегистрировать компонент прежде чем использовать его в приложении.
Можно более подробно описать как это сделать? А то мой уровень пока весьма низок.
Заранее благодарю.
REGSRV32 "cfx32.ocx"
естественно выполнять это надо в папке в которой компонент лежит.
Кроме того, компонент можно зарегистрировать программно:
Код:
я думаю идея понятна. Код не тестировался и не проверялся.
Да и вообщето снятие галочки не должно вызывать подобных эффектов. Версия билдера какая?
Ну и естественно использование инсталлятора тоже поможет :)
Если вас не затруднит - объясните, пожалуйста, более доходчиво как зарегистрировать компонент программно.
Версия Builder 6.0.
Цитата: XeeD
К сожалению, мне необходима более подробная инструкция :(.
Если вас не затруднит - объясните, пожалуйста, более доходчиво как зарегистрировать компонент программно.
Версия Builder 6.0.
Если вас не затруднит - объясните, пожалуйста, более доходчиво как зарегистрировать компонент программно.
Версия Builder 6.0.
куда уж подробней то? Код вам приведен - все что нужно - это пробовать и читать справку.
Цитата: kot_
куда уж подробней то? Код вам приведен - все что нужно - это пробовать и читать справку.
Пробовал вписать код в Main.cpp. Компилятор выдал море ошибок. Соответственно, что-то я делаю не так. А вот КАК нужно делать - этого я пока не понимаю и прошу помочь.
Цитата: XeeD
Пробовал вписать код в Main.cpp. Компилятор выдал море ошибок. Соответственно, что-то я делаю не так. А вот КАК нужно делать - этого я пока не понимаю и прошу помочь.
Я тоже телепатом не работаю и решать ваши задачи за вас решать не буду. С "морем ошибок" плавайте сами - догадываться о чем либо я не собираюсь
Код:
...
#pragma resource "*.dfm"
typedef HRESULT ((__import *DllRegisterSrv)())
DllRegisterSrv RegFunc = NULL;
Handle DLL = LoadLibrary("cfx32.ocx");
if(!DLL) return;
RegFunc = (DllRegisterSrv*)GetProcAddress(DLL, 'DllRegisterServer');
if(!RegFunc) return;
RegFunc();
TForm1 *Form1;
...
#pragma resource "*.dfm"
typedef HRESULT ((__import *DllRegisterSrv)())
DllRegisterSrv RegFunc = NULL;
Handle DLL = LoadLibrary("cfx32.ocx");
if(!DLL) return;
RegFunc = (DllRegisterSrv*)GetProcAddress(DLL, 'DllRegisterServer');
if(!RegFunc) return;
RegFunc();
TForm1 *Form1;
...
Ответ компилятора:
Код:
[C++ Error] Main.cpp(13): E2141 Declaration syntax error
[C++ Error] Main.cpp(14): E2040 Declaration terminated incorrectly
[C++ Error] Main.cpp(15): E2303 Type name expected
[C++ Error] Main.cpp(15): E2451 Undefined symbol 'DLL'
[C++ Warning] Main.cpp(15): W8098 Multi-character character constant
[C++ Error] Main.cpp(15): E2129 Character constant too long (or empty)
[C++ Error] Main.cpp(15): E2034 Cannot convert 'unsigned int' to 'const char *'
[C++ Error] Main.cpp(15): E2342 Type mismatch in parameter 'lpProcName' (wanted 'const char *', got 'unsigned int')
...
[C++ Error] Main.cpp(14): E2040 Declaration terminated incorrectly
[C++ Error] Main.cpp(15): E2303 Type name expected
[C++ Error] Main.cpp(15): E2451 Undefined symbol 'DLL'
[C++ Warning] Main.cpp(15): W8098 Multi-character character constant
[C++ Error] Main.cpp(15): E2129 Character constant too long (or empty)
[C++ Error] Main.cpp(15): E2034 Cannot convert 'unsigned int' to 'const char *'
[C++ Error] Main.cpp(15): E2342 Type mismatch in parameter 'lpProcName' (wanted 'const char *', got 'unsigned int')
...
мой юный друг - здесь не детский сад. если вы не знаете элементарных вещей в С++ - то это глубоко ваша проблема. Книга для начинающих и разбирайтесь в своих ошибках. Тема закрыта. Разберетесь в чем проблема - пишите мне открою снова.