Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как создать dll на Visual C++ 
V
    Опции темы
newsTester
Дата 11.4.2008, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хочу из проекта написанного на Visual C++ сделать библиотеку для использования ее в проекте на Java. Делала пододобное на C++ Bilder.

Но возникают следующие проблемы:
1) При попытке перенести сделанный на основании имеющегося проекта lib файл в проект C++ Bilder получаю:
Цитата

[Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\LIBSTEMKA_SMD.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

2) В отличии от C++ Bilder в Visual C++ нет библиотек (*.h файлов) необходимых для работы с JNI интерфейсом, а как сделать так чтобы  Visual C++ взял их из той же JDK (где они лежат я знаю) я не пойму
PM MAIL   Вверх
dizzy1984
Дата 11.4.2008, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 25



Не совсем понятно что куда хотят перенести. Если переносят с vc++ на java, то причем тут с++ builder? Я всегда думал, что с++ и java это разные языки программирования, так что скомпилировать исходники от дного на другом не выйдет... obj файлы, на сколько я знаю, привязаны к компилятору и с ними кашу тоже не сваришь. Что не привязано к компилятору, так это *.cpp и *.dll файлы

Это сообщение отредактировал(а) dizzy1984 - 11.4.2008, 07:16
PM MAIL   Вверх
newsTester
  Дата 11.4.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Если переносят с vc++ на java, то причем тут с++ builder? 

ну да, мутно написано ). Действительно, хочу перенести с vc++ на java, а с++ builder вспомнила в связи с тем что переход из с++ builder на java уже отработан.
Цитата

 с++ и java это разные языки программирования, так что скомпилировать исходники от дного на другом не выйдет... obj файлы, на сколько я знаю, привязаны к компилятору и с ними кашу тоже не сваришь. Что не привязано к компилятору, так это *.cpp и *.dll файлы

речь идет именно о создании *.dll файла. При этом для меня есть два пути
1) перебросить проект vc++ на с++ builder, а дальше по накатанной дороге - тогда возникает первая проблема из предыдущего поста.
2) сразу в vc++ сформировать нужный *.dll файл - тогда возникает вторая проблема из предыдущего поста.

вот..
PM MAIL   Вверх
dizzy1984
Дата 14.4.2008, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 25



1) Вместо *.lib файла перенести *.cpp файлы и скомпилировать их?
2) Вот тут у меня будет заковыристый(е) вопрос(ы) : а JDK может работать с vc++, т.е если проблема только в видимости неких *.h файлов, то эт не сложно, просто укажи путь в директориях. В моей vs98 это Tools->Options->Directories->Include Files.
Можно немного информации по тому, что требуется чтобы вызвать код на с++ из java? Просто, сами по себе *.h файлы мало полезны...
PM MAIL   Вверх
newsTester
Дата 16.4.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Можно немного информации по тому, что требуется чтобы вызвать код на с++ из java? Просто, сами по себе *.h файлы мало полезны...

По сути вызывается не код, а *.dll библиотека написанная в соответствии с требованиями JNI интерфейса. Ну а при написании этой библиотеки необходимо использовать специальные *.h файлы постовляемые вместе с JDK.
PM MAIL   Вверх
dizzy1984
Дата 17.4.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 25



Ага. понятно. 
Ну все то же самое.
1) Если через билдер - возьми *.cpp файлы и скомпилируй на нем, переносить lib бесполезно, билдер не поймет формат vc++. Если ты используешь какие-то библиотеки заточенные под vc++, то никак, т.к их врядли скомпилирует билдер.
2) Тут нужно почитать документацию и убедиться что  *.h JDK файлы воспримутся компилятором vc++. В принципе для этого им нужно соответствовать стандарту и не содержать каких-то специальных ключевых слов используемых другими компиляторами. Можно просто проверить методом тыка. Как указать директорию файлов я написал.
PM MAIL   Вверх
newsTester
Дата 17.4.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в конце-концов перебросила исходники на родной C++Builder.
Т.к. студия с заголовочными файлами для Java как то не стыкуется или я чего то не понимаю.
Вобщем проблему сняли, спасибо  smile 
PM MAIL   Вверх
Kosoglaz
Дата 18.4.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(newsTester @ 17.4.2008,  12:50)
в конце-концов перебросила исходники на родной C++Builder.
Т.к. студия с заголовочными файлами для Java как то не стыкуется или я чего то не понимаю.
Вобщем проблему сняли, спасибо  smile

Рад за Вас, тогда ЗЫ:

ошибка из-за разных форматов .obj файлов, используемых Борландом и Мягким. OMF и COFF соответственно. Поженить их вроде не получается, так что варианты:
1) пересобрать проект на Билдере (что Вы и сделали smile )
2) Найти импортёр из COFF в OMF
3) сделать на Вижуале длл-обёртку, которая через stdcall будет гнать данные в длл-на-Билдере, а та уже с JNI в Жаву. Но это крайний случай.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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