![]() |
|
|
![]()
|
|
| Slava99 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Возникла такая проблема: при использовании во внутренних функциях dll типа AnsiString возникают различные
Linker Error-ы, например такие: [Linker Error] Error: Unresolved external 'System::__linkproc__ __fastcall LStrClr(void *)' referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\DEBUG\VCLE.LIB|dstring [Linker Error] Error: Unresolved external 'System::__linkproc__ __fastcall LStrFromPChar(System::AnsiString&, char *)' referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\DEBUG\VCLE.LIB|dstring [Linker Error] Error: Unresolved external 'System::__linkproc__ __fastcall LStrAsg(void *, const void *)' referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\DEBUG\VCLE.LIB|dstring Возникают эти ошибки если просто объявить переменную типа AnsiString или вызвать какую-нибудь функцию (из модуля SysUtils например, да из любого), у которой один из параметров AnsiString в любой из функций или классов моего модуля Причем такая деталь, если этот модуль подключить не к dll, а к exe проекту всё компилируется и работает отлично... |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
либо облюдаем это условие либо замени AnsiString на char* |
|||
|
||||
| Slava99 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Это условие надо соблюдать при экспорте/импорте строк, у меня же они используются внутри.
Например, я пытаюсь вызвать ф-цию FindFirst(AnsiString path, ...) и возникают ошибки. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
А ты хочешь сказать при использование стандартных функций?
Добавлено через 52 секунды Здается мне тогда что здесь вся фича в области видимости Добавлено через 1 минуту и 42 секунды Попробуй так
|
|||
|
||||
| TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
а я юзаю ShortString в Dll
-------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Не имхо у него какие то траблы как я понял с вызовом стандартных функций |
|||
|
||||
| TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
> mrbrooks
код в студию наверное -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
|
|||
|
||||
| Slava99 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Дело в том, что объявить локально, внутри своей функции, не экспортируемой, переменную AnsiString я тоже не могу.
Простой пример (на бессмысленность кода не обращай внимания, важен сам принцип):
такая ошибка: [Linker Error] Error: Unresolved external 'System::__linkproc__ __fastcall LStrClr(void *)' referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\DEBUG\VCLE.LIB|dstring Можно вызвать стандартную ф-цию с параметром AnsiString, или самому его использовать, одно и то же. Если убрать объявление s, ошибок не возникает |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
ок. а ты воздержись от использования в dll вообще AnsiString и используй char*
|
|||
|
||||
| TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
>Slava99
ты как хочешь загружать dll - динамически или статически? -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
||||
|
||||
| Slava99 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Связывание будет и динамическое и статическое. Все будет зависеть от того, где ее потом будут использовать.
Вот получше пример:
Здесь уже не получится работать с char*... Ну здесь-то можно обойтись без AnsiPos, но вообще мне требуется вызывать стандартные ф-ции, использующие в качестве параметров класс AnsiString. Ошибка та же. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Это почему нельзя. Найти первое вхождение в массив символов очень даже можно
|
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
use vcl в свойствах проекта поставь
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |