Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пришить CYGWIN DLL, к BCB 
:(
    Опции темы
comcon1
Дата 17.4.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Вот скомпилил я DLL.
Включил ключ --mno-cygwin, что должно заставить ее работать и БЕЗ CYGWIN-а. Как обратиться??? 
Допустим, есть тупая DLL:

ЕЕ код:
Код

#include <stdio.h>

int
hello()
{
  printf ("Hello World!\n");
}


Собираю:
Код

gcc --mno-cygwin -c mydll.c
gcc --mno-cygwin -shared -o mydll.dll mydll.o


Есть ли какие-нибудь особенности для использования этой DLL в BCB, просто я ни разу DLL не делал, так что не знаю с чего начать. Мож ее как-то по особому надо написать???

Подскажить пжлст...  

Это сообщение отредактировал(а) comcon1 - 17.4.2006, 13:53


--------------------
PM MAIL   Вверх
_hunter
Дата 17.4.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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





--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
comcon1
Дата 17.4.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Тут импорт/экспорт с MSVC. 


--------------------
PM MAIL   Вверх
_hunter
Дата 17.4.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



дык а разница?
extern ”C” void __declspec(dllexport) в любом случае пишется. да и остальные подходы не изменятся... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
comcon1
Дата 17.4.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Мда. Вот что нашел я:
DLLWRAP+IMPLIB

Тут в примере линкуется с-прога. Но моя С++ таким образом линковаться не хочет. Сейчас попробую через declspec. 

-------- вот мой вопрос более конкретно --------------

Вот мой код DLL-ки. Я попробовал через declspec(import) вызвать ее для bcc через implib. Все слинковалось bcc сделал exe-код, но прога виснет на вызове функции. Я переалиасил foo в _foo в DEF-файле.

КОД DLL.
Код

 #include <ginac/ginac.h>
 #include <iostream>
 #include <string>
 
 
 using namespace std;
 using namespace GiNaC;

 extern "C" {
   int __declspec(dllexport) __cdecl foo(void);
 } 
 
 int foo(void) {
  
  string al ("(-1)/(((x)^2)^2)*(2*(x))+log(x)*3*(x)^2+(x)^3*1/(x)");
  symbol x("x"), y("y");
  lst vars(x,y);
  
  cout << "BEFORE COLLAPSE :" << al << endl;
  
  ex poly(al, vars);
  
  cout << "AFTER COLLAPSE :" << poly << endl;
  
  ex difpoly = poly.diff(x);
  
  cout << "DERIVATIVE FIRST :" << difpoly << endl;
  
  return 0;
 }


Вот код вызывающей программы:
Код

 #include<stdio.h>

 extern "C" {
 int __declspec(dllimport) foo(void);
 }
 
 int main() {
  printf("Hello before function call\n");
  return foo();
 }


Вот код DEF-файла, который использовася implib-ом:
Код

LIBRARY gitest.dll

EXPORTS
    _foo = foo
 

Это сообщение отредактировал(а) comcon1 - 17.4.2006, 15:45


--------------------
PM MAIL   Вверх
comcon1
Дата 18.4.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Ну... неужели никто не знает... 
smile 
Придётся делать внешний вызов exe-шника... 


--------------------
PM MAIL   Вверх
_hunter
Дата 18.4.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



я могу ошибаться, но у библиотек нету потоков ввода/вывода. их хендлы нужно передать в виблиотеку. 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
comcon1
Дата 18.4.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Странно. Почему с g++ библиотеками все работает?? Но я попробую. Спасибо. 


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

1. Публиковать ссылки на вскрытые компоненты

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

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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