Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование директивы {L } в Турбо Паскале!!! 
:(
    Опции темы
Fighter
Дата 24.10.2005, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Подскажите в чем дело?

Я на Turbo C++ написал модуль без функции main. В этом модуле было 2 функции. Я поставил этот модуль только на компилирование (выбирал из меню пункт Compile). Была компиляция без линковки. И вот для этого файла компилятор создал объектный файл. И мне теперь надо было использовать эти подпрограммы в Паскале. Я для этого скопировал obj файл в объектную папку (Options/Directories/Objects Directories). И стал подключать этот файл с помощью директивы {L}
Я написал что-то вроде.

Код

Uses Crt;

{L TryLib.obj}
...

begin
...
end.

И в том месте где я подключаю он выводит ошибку.
Что мне делать?
PM MAIL   Вверх
Zero
Дата 24.10.2005, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Fighter @ 24.10.2005, 22:50)
И стал подключать этот файл с помощью директивы {L}

Fighter
Где ты видел, что директивы и комментарии ─ одно и тоже... smile
Директива в паскале делается так:
Код

{$<имя директивы>}

Короче символ $ поставь после скобки коментария {, тогда компилятор будет воспринимать коментарий как директиву.
Ещё можешь почитать справку об том как её правильно использовать, для этого поставь курсор на текст кода и нажми <CTRL>+<F1>
PM MAIL ICQ   Вверх
Fighter
Дата 24.10.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Так в книге по турбо паскалю (Фаронов) там так и написано
{$L <имя файла>}.
PM MAIL   Вверх
Zero
Дата 25.10.2005, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Fighter @ 24.10.2005, 23:56)
Так в книге по турбо паскалю (Фаронов) там так и написано
{$L <имя файла>}.

Нуууу... А ты то как написал????
У тебя вот так:
Код

{L TryLib.obj}

А надо так:
Код

{$L TryLib.obj}

Даже тут на цвет подсветки обрати внимание, у тебя коментарий, а у меня обозначение директивы.
PM MAIL ICQ   Вверх
volvo877
Дата 25.10.2005, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Fighter @ 24.10.2005, 21:50)
И в том месте где я подключаю он выводит ошибку. Что мне делать?

Привести сообщение об ошибке. Ну, подключил ты OBJ файл, только пока ты не описал процедуры/функции, находящиеся в OBJ-файле как External (внешние), компилятор Паскаля о них не имеет никакого понятия, а должен-то знать именно компилятор!!!

С {$L ...} работает Linker, он подключает OBJ в последний момент...
PM MAIL   Вверх
Fighter
Дата 27.10.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Ну хорошо, вот текст TryLib.cpp написанный на Turbo C++ и откомпилированный (не линкованный)

Код

#include <iostream.h>

void HellWorld()
{
  cout<<"Hello world";
}



Теперь, вот я пишу программу на паскале


Код

  Uses Crt;

  {$L TryLib.obj}
  procedure HellWorld; external;

  begin
    HellWorld;
  end.


Теперь в месте
Код

  {$L TryLib.obj} 

Он выдает ошибку

Error 47: Invalid object file record (C:\Program1\Tp\Objects\TryLib.obj).

Что делать!!!?!??!
PM MAIL   Вверх
Romtek
Дата 28.10.2005, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 7.12.2004
Где: Холон

Репутация: нет
Всего: 4



По-моему нельзя импортировать объектные файлы из С++ в Паскаль.
Из С по идее можно. How to Link Turbo C Files into Turbo Pascal
Using C And Pascal - Link

Это сообщение отредактировал(а) Romtek - 28.10.2005, 02:06
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.3239 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.