Я использую XE3 и пытаюсь создать DLL с моим сторонним компонентом. Поскольку это довольно большой проект, я опишу его, а затем подробно опишу данный вопрос.
У меня есть несколько файлов cpp и несколько файлов заголовков (классы в файлах заголовков, функции в файлах cpp). У меня есть все, что связывает и компилирует нормально, пока я не поставлю CreateWnd()
работать в одном из моих классов
void __fastcall TICSByteEntry::CreateWnd(void)
{
TCustomControl::CreateWnd();
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) | WS_CLIPSIBLINGS);
}
Теперь он будет скомпилирован с этим кодом, но когда я помещу свой компонент в форму и попытаюсь запустить этот проект, он выдаст мне ошибку
‘[ошибка ilink32] Ошибка: Неразрешенная внешняя ‘__fastcall TICSByteEntry :: CreateWnd () ссылается на’ path’unit1.obj‘
Никаких других проблем со связыванием, кроме этого, и как только я это закомментирую, все работает хорошо, как и ожидалось. Когда я изучал это онлайн, кто-то сказал, что у него проблемы с поиском точки входа. http://edn.embarcadero.com/article/27343. Я попробовал то, что было рекомендовано, и не повезло. Любой хочет догадаться, что не так?
Вместо переопределения CreateWnd()
вы должны переопределить CreateParams()
, Таким образом, окно создается с нужным вам стилем и не нуждается в изменении после создания.
Других решений пока нет …