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

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

07.05.2010, 14:00. Показов 14253. Ответов 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 / 2082 / 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 / 2082 / 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru