![]() |
|
![]() ![]() ![]() |
|
bass |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: нет Всего: 2 |
Доброго вечера уважаемые программисты.
Прошу помощи по компоновке ДЛЛ в visual studio 10. Студию для проектов использую редко, так что прошу не пинать. У меня есть проект на Borland 6 . И решил я в данном проекте расширить функционал. На просторах интернета нашел вполне пригодный код на "С" под visual studio 10. В данном примере проектов штук 30-ать все исходные файлы ЕХЕ (Debug). Зашел в свойства проекта преставил что это dll, экспортировал функции. Закинул функции и нужный функционал в данные функции... И тут начались пляски с бубном.. Появились искаженные имена функций _AddCPP@16. В шестой студии от этого спасал def файл. Взял из рабочего проекта шестерки файл, поправил под существующую либу. Не чего не изменилось. В настройках компоновщика нашел где крепить данный деф, но все равно не выходит каменный цветок.
Ну и сам деф. Пробовал
Пробовал
Но всеравно _AddCPP@16 как будто не видит дефа. Думаю из-за того что проет был ехе а я его в динамическую библиотеку переставил. И ставлю релиз не компилирует lib и не может выполнить построение. Вернее компилирует и кидает в папку Debug. Перекидываю данный файл в релиз выполняет построение. Задача вообще стоит данную длл к проекту борланда подключит статически чтобы она была в ресурсах проекта. Но это второстепенная задача. За ранее огромное спасибо. |
||||||||
|
|||||||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 4 Всего: 85 |
||||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Это из-за __stdcall. А с Borland'ом иначе нельзя? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
bass |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: нет Всего: 2 |
volatile Спасибо за ответ. ну так и пишите Add=_AddCPP@16 Попробую просто в 6 ой студии работала и так Add=_AddCPP и еще, после @ идет не количество аргументов, а общий размер аргументов в байтах, поэтому 1, или 2, как у вас, быть врядли может, там кратно 4 Таким образом в шестерке (Visual studio 6) определяеться порядковый номер функци. (Функция может бым экспортирована по имени и по номеру.) Это из-за __stdcall. А с Borland'ом иначе нельзя? Да именно из-за __stdcall.... Но это можно было def файлом исправить в Visual studio 6. НЕ понял суть вопроса про Borland на данный момент стоит вопрос создания библиотеки с правильными именами функций. Далее я ее статически подключю к проекту борланда. |
|||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 4 Всего: 85 |
Спецификация def файла не изменилась с тех пор. Все правильно, сорри, если после пробела и собаки, оно означает порядковый номер (ordinal). Его вам вовсе не нужно указывать, вероятней всего. А после собаки (без пробела) идет как я и сказал число байт в аргументе
https://msdn.microsoft.com/ru-ru/library/hy...(v=vs.120).aspx впрочем с 10ой студией я пока не работал. Это сообщение отредактировал(а) volatile - 18.8.2015, 19:17 |
||||
|
|||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Вы же не случайно перешли с __cdecl на __stdcall. Насколько я помню, это способ вызова функций в Borland'е по умолчанию. Просто стало интересно, нельзя ли борландовской функции каким-нибудь образом приписать __cdecl. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Akira |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 26.3.2012 Репутация: нет Всего: нет |
calling convention извечный камень о который спотыкаются, оставлю это здесь
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Akira, спасибо за ссылку. В статье советуют совсем простой def-файл:
bass, попробуйте, может, не нужны вообще эти сложности с @. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
bass |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: нет Всего: 2 |
Доберусь завтра до рабочего места попробую. @1 я пытаюсь выставить порядковый номер функции. Как то писал на 6-ке перехват сетевого трафика. Была написана ws2_32.длл . Что с английским плохо на форуме . Экспортирующая все функции стандартной библиотеки, без порядковых номеров глючила. На данном этапе библиотеку использую я, можно и __cdecl использовать и __stdcall. Здесь уже встал спортивный интерес на 6-ке работало. На 10 ке не могу сделать. (((( Спасибо за помощь. Это сообщение отредактировал(а) bass - 19.8.2015, 08:18 |
||||
|
|||||
Akira |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 26.3.2012 Репутация: нет Всего: нет |
Это работает. Гонял dll в обе сторы примерно в том же году в котором была написанна статья. Только не забудьте о конвертации coff => omf и omf => coff. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |