Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Re: Подключение библиотек. Visual C++  (Прочитано 10522 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ayu
Гость
« : 10-05-2010 09:39 » 

Помогите пожалуйста в подключенни библиотек!!!!!!!!

У меня есть файл MathFuncsDll.dll MathFuncsDll.h MathFuncsDll.cpp


код в файле MathFuncsDll.h
Код:
// MathFuncsDll.h
namespace MathFuncs
{
class MyMathFuncs
{
{
public:
// Возвращает a + b
static _declspec(dllexport) double Add (double a, double b);
            // возвращает a - b
static _declspec(dllexport) double Subtract (double a, double b);
            // Возвращает a * b
static _declspec(dllexport) double Multiply (double a, double b);
// Возвращает a / b
static _declspec(dllexport) double Divida (double a, double b);
};
}

код в файле // MathFuncsDll.h
Код:
namespace MathFuncs
{
class MyMathFuncs
{
{
public:
// Возвращает a + b
static _declspec(dllexport) double Add (double a, double b);
            // возвращает a - b
static _declspec(dllexport) double Subtract (double a, double b);
            // Возвращает a * b
static _declspec(dllexport) double Multiply (double a, double b);
// Возвращает a / b
static _declspec(dllexport) double Divida (double a, double b);
};
}
// MathFuncsDll.h
namespace MathFuncs
{
class MyMathFuncs
{
{
public:
// Возвращает a + b
static _declspec(dllexport) double Add (double a, double b);
            // возвращает a - b
static _declspec(dllexport) double Subtract (double a, double b);
            // Возвращает a * b
static _declspec(dllexport) double Multiply (double a, double b);
// Возвращает a / b
static _declspec(dllexport) double Divida (double a, double b);
};
}
// MathFuncsDll.h
namespace MathFuncs
{
class MyMathFuncs
{
{
public:
// Возвращает a + b
static _declspec(dllexport) double Add (double a, double b);
            // возвращает a - b
static _declspec(dllexport) double Subtract (double a, double b);
            // Возвращает a * b
static _declspec(dllexport) double Multiply (double a, double b);
// Возвращает a / b
static _declspec(dllexport) double Divida (double a, double b);
};
}

MathFuncsDll.cpp

// MathFuncsDll.cpp
// compile with: /EHsc /LD
#include "MathFuncsDll.h"
#include <stdexcept>
using namespace std;
namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
double MymathFuncs::Subtract(double a, double b)
{
return a - b;
}
double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}
double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw new invalid_argument("b cannot be zero!");
}
return a / b;
}
}

И после этого решение не строится.... Что делать?Не понялНе понялНе понял??
« Последнее редактирование: 10-05-2010 16:34 от RXL » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-05-2010 16:34 » 

Что значит "решение не строится"?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 11-05-2010 16:35 » 

Если ты тупо хочешь использовать .dll и прикрутить ее к проекту то тебе не нужно знать что в ней написано вообще. Прогони .dll'ку через depends там будет видно какие функции из нее можно вытянуть, ну а дальше все по стандарту.
ЗЫ В твоем коде не разбирался, но помоему ты об этом.
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 11-05-2010 17:48 » 

Денисrf, тупо — не получится. DLL может не содержать отладочной информации, равно и информации об аргументах функций. Что толку от того, что известно имя, но не известны параметры?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 11-05-2010 18:15 » 

Не, ну сомо собой что если .dll сторонняя то какая - то документация должна быть где это указывается, а тут хедер есть.
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 11-05-2010 18:31 » 

И если линкер сумеет сделать на основе подсунутой DLL код вызовов.

На практике у тебя это получалось?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 12-05-2010 05:45 » 

Ты похоже имееш ввиду не явное подключение? Я поьзуюсь явной загрузкой – вызовом функций LoadLibrary и GetProcAddress, с последующим вызовом функции FreeLibrary. Мне кажется явная загрузка лучше.
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 12-05-2010 06:28 » 

Ручной режим вполне понятен. Я имею в виду именно автоматическую линковку, без лишних телодвижений.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
sss
Специалист

ru
Offline Offline

« Ответ #8 : 12-05-2010 08:17 » 

RXL, допустим, в недрах Borland (каталог bin), есть утилитка IMPLIB.EXE

Код:
C:\Program Files\Borland\BDS\4.0\Bin>IMPLIB.EXE

Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation

Syntax: IMPLIB [options] libname[.lib] [@respfile | srcname] [srcname ...]
 Options:
    -a     Add '_' alias for MS flavor cdecl functions
    -c     Case sensitive symbols
    -f     Force imports by name (with hints)
    -w     No Warnings

Respfile may contain a list of source files to process.
Wildcards are ok for .DLL and .DEF file names.

Делаешь так

Код:
IMPLIB.EXE some.lib some.dll

(создается some.lib) и подключаешь lib к проекту.

Записан

while (8==8)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 12-05-2010 08:30 » 

sss, а по части VS?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
sss
Специалист

ru
Offline Offline

« Ответ #10 : 12-05-2010 08:33 » 

Могу путать (давно делал).... Вроде DUMPBIN
Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #11 : 12-05-2010 08:45 » 

Во чё нашел
Записан

while (8==8)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines