Конференция "FreePascal" » Ошибка компилятора [Win32]
 
  • Turbid © (22.05.06 01:40) [0]
    Помогите решить 2 проблемы с компилятором:

    1. При использовании функции Shell_NotifyIcon(NIM_ADD, @IconData) происходит ошибка:"Can't determine which overloaded function to call". На delphi все проходит на ура с теми же параметрами...

    2. При использовании IDE происходит ошибка линковки:

    Error: could not create d:\turbid\program.exe                  
    Error: ld.exe:link.res: file format not recognized; treating as linker script
    Error: ld.exe:link.res:1: syntax error
    Эта ошибка не возникает при компилировании с командной строки.
  • Avva (22.05.06 08:22) [1]
    1. На какую функцию ругается?
    2. Надо посмотреть на опции IDE. Выставить те же, что прописаны в fpc.cfg, и все должно заработать
  • Turbid © (22.05.06 10:15) [2]
    1.Именно на эту функцию. Если что, то IconData: TNotifyIconData;
    2.Попробую.
  • PVOzerski © (22.05.06 19:25) [3]
    По 1): похоже, что ошибка (или, скорее, несовместимость) не в компиляторе, а в модуле, где описана функция  Shell_NotifyIcon. А именно, похоже, что с этим именем в модуле объявлена более, чем 1 функция (с разными наборами параметров). Соответственно, я бы попробовал явное приведение к типам (указание типов) параметров, передаваемых в нее.
    2): надеюсь, что в исходниках нет чего-нибудь вроде {$R link.res}. Дело в том, что компилятор создает временный файл с названием link.res, в который помещает часть параметров для линкера. Формат его зависит от targe OS.
  • Turbid © (22.05.06 21:31) [4]
    1. Если Вы имели ввиду сделать так:


    var
     IconData: TNotifyIconData;
     Nim: Dword;
     pIconData: Pointer;

    ...

     Nim := NIM_ADD;
     pIconData := @IconData;

     Shell_NotifyIcon(Nim, pIconData);



    то это не помогает.

    2. Никаких параметров компилятора в исходном тексте нет, да и иначе они бы также влияли на компиляцию с командной строки. Игра в настройки никчему не привила, единственное что, так это изменение ошибки на "Error while linking" если убрать галочку с "Call linker after".

    Версия FPC 2.0.2, хотя как показывает практика, не от этого зависит :-)
  • Turbid © (23.05.06 01:42) [5]
    1. Попробовал скомпилировать другой делфийский проект и получил эту же ошибку на функцию ExtractIcon. Обе функции получаются из модуля ShellApi. Кто-нить сталкивался с такими проблемами?
  • Turbid © (24.05.06 16:02) [6]
    1. Зарабоало так:

    type
     LPNOTIFYICONDATA = ^NOTIFYICONDATA;
    var
     IconData: NOTIFYICONDATA;
    ...
    Shell_NotifyIcon(NIM_ADD, LPNOTIFYICONDATA(@IconData));



    2. Не линковался, потому что в имени папки стоял "!". В примере я приводи произвольную папку.
 
Конференция "FreePascal" » Ошибка компилятора [Win32]
Есть новые Нет новых   [119082   +53][b:0][p:0.001]