Страница 1 из 1

IAR правильное оформление библиотеки

Добавлено: Ср апр 13, 2011 10:05:39
sich_zp
Ситуация: хочу скрыть исходники некоторых функций. В IAR. Для этого хочу создать откомпилированную библиотеку.
Создаю новый проект. В настройках "General options", на закладке "Output" указываю что это библиотека.
Создаю текст функции. Самый простой для теста.

Код: Выделить всё

#ifndef FUNCS_H
#define FUNCS_H

extern "C" void Test(void)
{

}
#endif


Компилирую все это. Компиляция проходит хорошо, без ошибок. В результате получаю файл "Func.r90". Этот файл перемещаю в каталог той программы, к которой подключаю данный модуль. Подключаю к проекту данный файл. Он подключается. Вызываю функцию из программы как Test(); После компиляции линкер выдает такую ошибку

Error[e46]: Undefined external "Test" referred in main ( Q:\Program\Controllers\ElFiltr\ElFiltr\Debug\Obj\main.r90 )

Вопрос: Почему линкер эту функцию ищет не там где надо? И как надо все это сделать, чтобы заработало?
Заранее спасибо за ответ!

Re: IAR правильное оформление библиотеки

Добавлено: Ср апр 13, 2011 10:14:48
ARV
на сколько я понимаю, вы должны компилировать библиотеку с функцией без extern, а при компиляции основного файла иметь хидер, где будет описан прототип этой функции, но уже с extern. и естественно, линкер должен прилинковывать вашу библиотеку.

Re: IAR правильное оформление библиотеки

Добавлено: Ср апр 13, 2011 10:33:06
sich_zp
Есть хидер с описание прототипа (забыл упомянуть). В нем указано

extern void Test(void);

Все равно не находит Пробовал и с extern и без него и в разных вариациях.

Re: IAR правильное оформление библиотеки

Добавлено: Ср апр 13, 2011 10:37:33
Vov123
В проекте надо подключить.

Re: IAR правильное оформление библиотеки

Добавлено: Ср апр 13, 2011 10:50:29
sich_zp
Да подключил я. Не обращался бы, если бы что-то не так подключил.

Linking
xlink.exe Q:\Program\Controllers\ElFiltr\ElFiltr\Func.r90 Q:\Program\Controllers\ElFiltr\ElFiltr\Debug\Obj\main.r90 -o Q:\Program\Controllers\ElFiltr\ElFiltr\ ............

Может что в настройках надо выставить?

Re: IAR правильное оформление библиотеки

Добавлено: Ср апр 13, 2011 20:54:09
asteroid7
sich_zp, читать лень?..

Код: Выделить всё

cmd -> ...\avr\bin -> xar.exe

Удобнее, перечисление файлов r90 в текстовой засунуть. Имя - строка.

Код: Выделить всё

xar.exe -V -x list.txt -o security.lib

Именно "security.lib" пристыковывается к проекту...