Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 421 • Страница 4 из 22<  1  2  3  4  5  6  7 ... 22  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
khasya
При сборке проекта реализация должна браться из LIB-файла библиотеки. Его и надо подключать (Shift-F11).

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)



Партнер
 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
Anoss Спасибо большое, похоже дело было действительно в .lib файле. Я нашел его и добавил в проект. Прежние ошибки пропали, правда появилась одна новая:
[Linker Error] 'C:\ZUBOV\SORTTARN_BCB\WINPAPI.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

Скорее она связано непосредственно с библиотекой и ее использованием, а lib-файл подключился правильно.
Еще раз спасибо, пойду разбираться дальше.

_________________
Я не суеверный. Я наблюдательный


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Думаю, что у вас .lib формата майкрософт, а не борланд, отсюда и ошибка..

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
Anoss
А есть ли способ как-то перекомпилировать библиотеку из формата Майкрософт в Борландовский формат?

_________________
Я не суеверный. Я наблюдательный


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Думаю, что нет, насколько я понимаю, майкрософтовские LIB не содержат собственно кода, а только указатели на функции в DLL.. борландовские же LIBы - просто коллекция файлов OBJ, готовых для сборки. Мне кажется, должны быть утилиты, которые делают LIB на основе DLL. В конце концов, если есть исходники библиотеки, можно скомпилить. А можно вообще просто загрузить DLL (LoadLibrary) и все нужные функции взять вручную GetProcAddress.
А что это за библиотека-то? Что такое "P"?)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
Библиотека называется Perfomance API(PAPI), замеряет количество выполненных процессором инструкций, операций время выполнения, промахи мимо кэша и много чего еще. В основном библиотека предназначена для использования в UNIX системах(Linux, AIX,Solaris, etc), а для Windows дистрибутивы выпускаются гораздо реже. Причем корректная работа возможна только на Windows NT, XP и Pentium I, II, III. Мне больше подошел бы вариант создания LIB из DLL, это было бы то что надо. Если у Вас программа есть или название хотя бы сохранилось, буду очень благодарен. Просто скомпилить исходники я так понимаю надо в Visual C, а я в нем не очень силен, а про LoadLibrary и GetProcAddress вообще первый раз слышу.
На всякий случай(если кто заинтересуется), адрес разработчика библиотеки:
http://icl.cs.utk.edu/papi

_________________
Я не суеверный. Я наблюдательный


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Нет, если вы хотите получить борландовский LIB, то и компилить надо компилятором от борланд)
Я ошибался) В пакете borland c++ builder ЕСТЬ утилита coff2omf, она должна преобразовать ваш COFF-LIB в то, что нужно борланду. Попробуйте.. если она не справится, я вам расскажу про GetProcAddress :hitrost:

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
По названию так должна справиться. Только ее надо использовать с какими-то ключами наверно? Попробовал перекиннуть ее в папку с библиотекой и запустить. Ничего не изменилось.

_________________
Я не суеверный. Я наблюдательный


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
запускать ее надо в форме coff2omf inputfile outputfile Ж))

например
coff2omf papi.lib omfpapi.lib

думал, вы сообразите, документация-то есть, в том числе и вывод справки при неправильном использовании)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
Anoss поиск я че-то забыл напрочь;).
с преобразованием в OMF все путем. Но ошибка
Цитата:
[Linker Error] Unresolved external '_PAPI_library_init' referenced from C:\ZUBOV\SORTTARN_BCB\UNIT1.OBJ
[Linker Error] Unresolved external '_PAPI_start_counters' referenced from C:\ZUBOV\SORTTARN_BCB\UNIT1.OBJ

вернулась. В чем может быть проблема, в свЯзи с DLL или конвертировании библиотеки (ключи надо было использовать)?
Простите за обилие мелких вопросов, просто опыта использования таких библиотек раньше не было.

_________________
Я не суеверный. Я наблюдательный


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Попробуйте с ключом -lib:st (coff2omf -lib:st inputfile outputfile).. при конвертировании там могли появиться проблемы с наличием/отсутствием символа "_" в начале имен функции.. если больше ничего не поможет, попробуйте просто убрать лидирующий "_" из имен функций в вашей программе и в .h файле)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
попробовал вызывать coff2omf со всеми вариантами ключей ( ms, st, ca). Результат нет, то есть ошибка не исчезла.
С именами функций ситуация такая. У меня в программе и в H-файле функции описаны без лидирующего символа "_".
В самом начале papi.h стоит
Цитата:
#ifndef _PAPI
#define _PAPI

но мне кажется это влиять на сами функции не должно. Может быть в том, что в DLL, где лежит реализация,
они как раз подменяются вызовами _PAPI_start_counters и т.д.(не уверен в этом)?


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Цитата:
#ifndef _PAPI
#define _PAPI

:lol:
это стандартный способ избежать многократного включения файла.
DLL тут вообще не при чем.
Попробуйте в project options на закладке Advanced compiler поменять "C calling convention" на "standard call".

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
К сожалению, пока эксперименты не увенчались успехом...
Сейчас пробую другой вариант: получение .lib файла из .dll.
Для этого пользуюсь утилитой implib из \CBuilder6\Bin.
implib -a -c papi_imp.lib WinPAPI.dll
Получаю файл papi_imp.lib.
После вставки этого файла в проект ошибка не исчезает, а принимает следующий вид:
[Linker Error] Unresolved external 'PAPI_library_init' referenced from C:\ZUBOV\SORTTARN_BCB\UNIT1.OBJ
[Linker Error] Unresolved external 'PAPI_start_counters' referenced from C:\ZUBOV\SORTTARN_BCB\UNIT1.OBJ

То есть лидирующее подчеркивание в .lib файлах появилось. А unresolved external почему-то не пропал.
В чем может быть дело:
- неверный вызов implib
- ненахождение самого DLL(это возможно?)
- что-то еще?


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Так у вас теперь наоборот, в obj файле все функции без подчеркиваний, а в lib - с подчеркиваниями.. вы поменяли "C calling convention" на "standard call"?..

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

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
Anoss
Огромное спасибо! Сразу проверил - начало наконец-то линковаться! :beer: :dance: :hi:

_________________
Я не суеверный. Я наблюдательный


 

:(Подскажите, пожалуйста! Как сделать таблицу с раскрывающимся списком подстрок, в которой, если щелкнуть по плюсику, раскроется список подстрок (с колонками).
Например:

- Расходы 100.0 200.6 500.7
+ Разовые 0.0 0.0 4.9
- Текущие 90.0 0.0 3.8
+ Периодические 10.0 0.0 4.7
+ Постоянные 0.0 200.6 487.3


 

Junior
Статус: Не в сети
Регистрация: 10.08.2005
Откуда: Тюмень
Подскажите пожалуйста... у меня есть набор ф-ций, мне нужно сделать их подключаемым модулем, как сие делаеться?


 

Member
Статус: Не в сети
Регистрация: 08.07.2004
Откуда: Краснодар
Вобщем так-есть массив
Char mass[160];Заполнен цифрами
Вопрос-как мне вывести всё это дело в TMemo чтоб в строчке было по 16 элементов,и в шеснадцатиричном представлении.
Помогите PLZ

_________________
Друзей не надо иметь, с ними надо дружить!


 

Junior
Статус: Не в сети
Регистрация: 15.09.2004
Откуда: Москва
Var
i:integer; tmps:string;
----------------------------------
----------------------------------
tmps:='';
for i:=0 to CharCount-1 do
begin
tmps:=tmps+IntToHexStr(mass[i])+' ';
if (i mod 16) = 0 then
begin
Memo.Lines.Add(tmps);
tmps:='';
end;
end;

P/S/ Извините, что на Паскале... Просто я - дельфиец. Но в общем выглядеть должно приблизительно так. Функция IntToHexStr может называться и по-другому, точно я не помню. Но это уже в хелп, поиск по строковым функциям.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 421 • Страница 4 из 22<  1  2  3  4  5  6  7 ... 22  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan