Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Linker Error] Unresolved external

490
17 сентября 2007 года
frid-karatel
357 / / 15.09.2007
[Linker Error] Unresolved external '__fastcall System:: operator +(const wchar_t *, const System::WideString&)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\#######\UNIT1.OBJ

Что делать??? Перекопал справку - а толку? :(

Сам прикол в том, что у меня 2500 строк - и вручную искать и выявлять ошибку - это пипец...
490
17 сентября 2007 года
frid-karatel
357 / / 15.09.2007
Так что может быть?

Посмотрел в интеренете - большинство ссылается мол на отключение "Build with Run-Time Packages"...

Есть другой вариант - я что-то не с тем плюсую (складываю), но вот что - как узнать? ((((((
12K
17 сентября 2007 года
__AleXX__
133 / / 02.04.2007
Это значит, что где-то объявлено что такая функция есть
__fastcall System:: operator +(const wchar_t *, const System::WideString&)

а на самом деле её реализации нет.

1. Если сам писал - значит, или реализацию не написал, или не написал что это функция класса System (или неймспейса - не шарю че за System) .
2. Если функция системная - значит какая-то (в котрой есть реализация этой функции) из библиотек не линкуется.
24K
17 сентября 2007 года
Starlit
16 / / 17.05.2007
Цитата: frid-karatel
[Linker Error] Unresolved external ...



Ты где-нибудь в файле Unit1.cpp или Unit1.h переопределяешь оператор +?

490
18 сентября 2007 года
frid-karatel
357 / / 15.09.2007
Разобрался, в чем ошибка - она меня настолько взбесила, что пришлось около 3000 строк буква за буквой проверять ((((

Итак, проблема была в несоответствии типов при складывании, а именно:
БЫЛО:
AnsiString s=<строка типа WideString>+char(9)+<строка типа WideString>;

ПЕРЕДЕЛАЛ:
AnsiString s=<строка типа WideString>+AnsiString(char(9))+<строка типа WideString>;

Ну и как это можно было отыскать? :)
92
18 сентября 2007 года
Тень Пса
2.2K / / 19.10.2006
посмотреть на номер строки указанный в ошибке. или кликнуть 2 раза на ошибку в списке. так и отыскать.

если строки не отображаются в ошибках, покопаться в настройках дебаггера. с ходу не вспомню какой флажок и где нужно поставить.
490
18 сентября 2007 года
frid-karatel
357 / / 15.09.2007
Цитата: Тень Пса
посмотреть на номер строки указанный в ошибке. или кликнуть 2 раза на ошибку в списке. так и отыскать.


Не показывается номер строки - вот в чем беда...

Цитата: Тень Пса

если строки не отображаются в ошибках, покопаться в настройках дебаггера. с ходу не вспомню какой флажок и где нужно поставить.


Дебаггер не запускается - приложение даже не компилируется...

PS: уже решил этот вопрос ;) можно закрыть тему
PSS: а как тему закрыть-то? :)

12K
18 сентября 2007 года
__AleXX__
133 / / 02.04.2007
Цитата: Тень Пса
посмотреть на номер строки указанный в ошибке. или кликнуть 2 раза на ошибку в списке. так и отыскать.

если строки не отображаются в ошибках, покопаться в настройках дебаггера. с ходу не вспомню какой флажок и где нужно поставить.



Походу на ошибки линкера никогда такой фичи не видел :))

Может перепутал процесс компиляции с линковкой? ;)

490
18 сентября 2007 года
frid-karatel
357 / / 15.09.2007
ну да - перепутал... :) ошибся, верней ))
309
19 сентября 2007 года
el scorpio
1.1K / / 19.09.2006
Цитата:
Цитата: Сообщение от Тень Пса
посмотреть на номер строки указанный в ошибке. или кликнуть 2 раза на ошибку в списке. так и отыскать.Не показывается номер строки - вот в чем беда...


В том то и дело, что ошибки линковки обнаруживаются, когда "номера строк" уже отсутствуют. Короче - пишется только модуль, а там мучайся сам :(

Цитата:
__fastcall System:: operator +(const wchar_t *, const System::WideString&)


Есть такой прикол в Билдере. Специально для классов AnsiString и WideString. Походу там не совсем корректно объявлена "дружественная" классу AnsiString функция (файл dstring.h) и её аналог для WideString (wstring.h - там вообще комментарий "!! not implemented?")

 
Код:
extern AnsiString __fastcall operator +(const char*, const AnsiString&);

В то время как все остальные функции объявлены как extern PACKAGE. Соответственно, код функции "сложения" указателя со строкой линковщик не находит.
По этой причине я давно уже многоуровневые сложения строк не делаю. Использую функцию Format со строкой подстановки и массивом параметров. Вот только значения типа WideString не обрабатываются
P.S.
А для простоты работы эти "проблемные" функции в указанных файлох лучше вообще закомментировать. Тогда будут ошибки компиляции, которые исправлять проще простого
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог