Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/68: Рейтинг темы: голосов - 68, средняя оценка - 4.88
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683

Подключение obj файла

07.05.2010, 14:00. Показов 14308. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, задали на лабаре сделать любую программу, которая использует функции написанные на других языках. Используя только метод подключения объектных файлов. Я слышал про такое, но никогда не интересовался, как это делается. Зашли в гугл на паре, полистали странички, нашли пару примеров, один из которых делает именно то что надо. Из Борланда С++, вызывает функцию на Делфи написанную.
Но что мы не писали и как не старались оно так и не заработало.
Сперва ели додумались как в Делфи генерировать объектный файл, а поскольку там в опциях 2 радио кнопки, С и С++ файлы перепробовали с обоими. Тоже ничего. А С++ компилятор после добавления того объектного файла постоянно выдавал ошибку
Цитата

Fail. Access violation. Terminating
В общем умного ничего не придумали, подскажите, как это нужно делать или может, где-то есть статья или еще что.
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.05.2010, 14:00
Ответы с готовыми решениями:

Подключение obj файла
Всем добрый день Сделал в МАСМ obj файл Вот его шапка .486 .model flat,stdcall .code start: public matrixlab matrixlab...

Подключение .obj файла VS 2017
При попытке подключения .obj файла возникает ошибка LNK1107 недопустимый или поврежденный файл: не удается прочитать по 0xDF HLL...

Подключение *.obj файла к проекту
Всем привет! Задали лабораторную, в которой нужно подключить внешний obj файл, написанный на ассемблере, к Турбо Паскалю. В методичке...

20
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
07.05.2010, 15:18
1)очень желательно использовать компиляторы одного производителя.
вы уверены, что формат obj-файла, сгенерированного Борландом, такой-же, как у Мелкомягких?
2)куда вы добавляли файл?
и если уж полезли в такие тонкости, то компилятору вообще фиолетово, какие obj-файлы вы в проект подключаете.
их связывает линкер(иногда говорят "линковщик"), а не компилятор.
возникает вопрос: что-ж вы там наделали-то, а?
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2010, 15:26  [ТС]
Я вообще то работаю с Визуалом, просто на тех машинах, что в универе, кроме Борлада ничего нет, что могло бы сдлеать объектные файлы. Пришлось из Борланд Делфи совать в Борланд С++.
По шагам:
Включил в Делфи генерацию объектного файла
Написал процедуру
Code
1
2
3
4
procedure Proc; stdcall;
begin
    writeln('asd');
end;
и откомпилил. Проекты в обоих случаях создал консольные.
При компиляции делфи проекта оно создало объектный файл.
Включил С++, через меню Добавил к проекту объектный файл генерированный Делфи.
Написал прототип
Code
1
extern "C" void _stdcall Proc();
Ну и получаю ошибку.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
07.05.2010, 15:53
Цитата Сообщение от TGrey[WoLf
Пришлось из Борланд Делфи совать в Борланд С++.
тогда это в раздел C++ Builder
насколько я помню правила MSVS - нужно писать extern в обоих моделях.
т.е. примерно так:
Delphi
1
2
3
4
extern procedure Proc; stdcall;
begin
    writeln('asd');
end;
C++
1
extern void _stdcall Proc();
что и куда добавляется через меню Borland тоже подсказать не могу.
но что нажимали вы не компиляцию - это точно. скорее всего - кнопку "Build"
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
07.05.2010, 16:15
Телепатией лень заниматься. Выложите то, что получилось - посмотрю.
Или на мыло.
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2010, 16:17  [ТС]
Да верно) Build, то привычка. А разве в Делфи есть extern?
В общем, я тоже думал куда поместить тему, но решил уже сюда, потому, что как я сказал я работаю в Визуале и хочу разобраться, как в нем это все делать, тем более, что там нет кнопки "Добавить объектный файл". Просто раз в Борландах ничего не получилось, то что за Визуал уже говорить.

Добавлено через 1 минуту
Цитата Сообщение от Black Fregat Посмотреть сообщение
Телепатией лень заниматься. Выложите то, что получилось - посмотрю.
Или на мыло.
Собственно, то что вверху 2 функции написано, то и есть. В Делфях только еще включил генерацию объектных файлов.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
07.05.2010, 16:20
Цитата Сообщение от TGrey[WoLf
потому, что как я сказал я работаю в Визуале и хочу разобраться, как в нем это все делать, тем более, что там нет кнопки "Добавить объектный файл".
нет, но там есть настройки проекта.
а в настройках проекта подраздел "Link" и в нем - список obj и lib файлов, включаемых в линковку.
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2010, 16:38  [ТС]
Дома попробовал под Студию, вот что получил:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program delphi;
 
{$APPTYPE CONSOLE}
var
a:integer;
 
procedure Proc; stdcall;
begin
  write('delphi');
end;
 
begin
  Proc;
  read(a);
  { TODO -oUser -cConsole Main : Insert code here }
end.
Code
1
2
3
4
5
6
7
8
9
#include <iostream.h>
 
extern "C" void _stdcall Proc();
 
int main()
{
 
    return 0;
}
результат:
Linking...
.\delphi.obj : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
07.05.2010, 16:54
Цитата Сообщение от TGrey[WoLf
fatal error LNK1123
во-во. о чем я и говорил. не знает линкер от мелкомягких такой формат.
Linker Tools Error LNK1123

failure during conversion to COFF: file invalid or corrupt

The object or resource could not be converted to Common Object File Format (COFF).

This tool requires the format of all input files to be COFF. If an input file is not COFF, LINK automatically converts 32-bit OMF objects to COFF, or the tool runs CVTRES.EXE to convert resource files.

Possible causes

* The file is corrupt.
* The file is not a valid file type. An example of an invalid type is a 16-bit OMF object.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
07.05.2010, 17:20
Ну то есть Вы хотите, что бы я запустил Delphi, откомпилировал obj, запустил CBuilder, собрал проект вместо того, чтобы за 2 минуты при помощи hiew посмотреть, что внутри у Вашего exe и почему он валится?
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2010, 17:22  [ТС]
Так и что теперь делать? Как мне с этим работать ? Преподаватель заявил, что объектные файлы имеют один формат и потому любые файлы подходят для той или иной среды.

Добавлено через 1 минуту
Цитата Сообщение от Black Fregat Посмотреть сообщение
Ну то есть Вы хотите, что бы я запустил Delphi, откомпилировал obj, запустил CBuilder, собрал проект вместо того, чтобы за 2 минуты при помощи hiew посмотреть, что внутри у Вашего exe и почему он валится?
Так а куда смотреть если нет ЕХЕшника. Я же говорю оно ничего не собирает в Борланде. Пишет Access violation, Terminating. И на этом завершает работу.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
07.05.2010, 18:16
Цитата Сообщение от TGrey[WoLf
Преподаватель заявил, что объектные файлы имеют один формат и потому любые файлы подходят для той или иной среды.
плюнь ему в лицо.
Борланд работает с obj в формате OMF.
Мелкомягкие - в формате COFF.
Вместе объектники в разных форматах не слинкуются никогда.

можно попробовать при компиляции указать формат получаемого файла, если компилятор поддерживает такие команда.
можно попробовать воспользоваться утилитой конвертации в составе MSVS.
но не уверен, что поможет.
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2010, 18:25  [ТС]
Так амм, а можно услышать, что же мне делать? Лабораторную то все равно надо делать))
У кого есть какие компиляторы майкрософтовские кроме Сишного? Буду благодарен, за прикрепленный объектный файл с любыми не сложными функциями без примудрений написанных на любом языке.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
07.05.2010, 18:47
Цитата Сообщение от TGrey[WoLf
У кого есть какие компиляторы майкрософтовские кроме Сишного?
в стандартный комплект IDE MSVS входит C++, FoxPro, VB. в новые - еще и C#.
еще есть и MASM.
выбирай.
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2010, 19:04  [ТС]
Эм так я бедный студент)) Все что у меня есть это Студия 6 и 2005.
Щас тогда попробую скачать МАСМ, еще бы и найти, как с него эти файлы вытягивать та и сами функции написать т.к. асм мы не учили(
В общем что-то с ним попробую намудрить. После компиляции взять его объектный файл и проделать те же операции и должно работать?

Добавлено через 12 минут
А вспомнил! В 2005 есть C#, VB и J#.
Сейчас еще на решотке попробую что-то смастерить)
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
07.05.2010, 19:07
Цитата Сообщение от TGrey[WoLf
Все что у меня есть это Студия 6
так в комплект MSVS 6.0 и входит VB и FoxPro.
Цитата Сообщение от TGrey[WoLf
После компиляции взять его объектный файл и проделать те же операции и должно работать?
да
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
07.05.2010, 19:18  [ТС]
Хорошо, 1 момент забыл узнать) Как в МАСМе и в Решотке сделать функцию stdcall?
И я смотрю что в Решотке в главном классе все функции статические. Это никак не повлияет на вызов этой функции через Си?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
08.05.2010, 06:12
Цитата Сообщение от TGrey[WoLf
Как в МАСМе и в Решотке сделать функцию stdcall?
в решетке - не знаю.
не пишу на ней, не нравятся мне трхэтажные обращения к членам.
а на MASM легко:
Assembler
1
PROTO STDCALL myFunk:DWORD, :DWORD, :DWORD
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
08.05.2010, 16:26  [ТС]
Ой я так понял, что в МАСМе синтаксис отличается не много от обычного асма за счет макросов или как оно там называется?
Что-то у меня не получается ничего такого смастерить из-за отсутствия знания в других языках.
Все же могли бы вы пожалуйста сделать на МАСМе объектный файл с парой тройкой функций, к примеру void f1(), int f2(), void f3(int), int f4(int). Функции любые, нахождение минимального из 2 посланных в функцию и т.п. Что-то не сложное. Буду благодарен( А то времени нет учить синтаксис МАСМа к тому, что и сам асм плохо знаю(
Спасибо!
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
09.05.2010, 13:09
Цитата Сообщение от TGrey[WoLf
;713042]Все же могли бы вы пожалуйста сделать на МАСМе объектный файл с парой тройкой функций, к примеру void f1(), int f2(), void f3(int), int f4(int). Функции любые, нахождение минимального из 2 посланных в функцию и т.п. Что-то не сложное. Буду благодарен( А то времени нет учить синтаксис МАСМа к тому, что и сам асм плохо знаю(
времени нет.
зайди в раздел низкоуровневого программирования и возьми готовый пример.
stdcall означает, что все параметры передаются через стек.
результат возвращается в регистре eax.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.05.2010, 13:09
Помогаю со студенческими работами здесь

Создание DLL из OBJ файла
Доброго времени суток! Поставщик предоставил библиотеку в виду obj и h-файла. Необходимо создать DLL из obj. пробовал через:...

Как указать линкеру Visual C++ 6.0 два obj-файла?
Пожалуйста помогите. В каталоге bin имеется только файл MSDEV.EXE Получается,что опции компилятора/линкера можно редактировать только...

Парсинг .obj файла
при парсенге файла столкнулся с серьёзной проблемой, а именно у треугольника три нормали пример: f 309//309 387//387 312//312 f...

Подключение файлов obj
Здравствуйте! Мне очень интересно следующее: допустим есть программа, в которой есть 3 файла (1: main.cpp, 2: class.h, 3: class.cpp)...

Подключение фортрановских файлов в формате OBJ
Здравствуйте, подскажите пожалуйста как подключить файл .obj фортрановский, в консольном приложении на C++ в среде VS2010? При простом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru