Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как правильно писать DLL

9.2K
04 июня 2008 года
mikron
27 / / 07.01.2006
Понадобилось мне собрать библиотеку с некоторыми функциями.Раньше никогда не собирал,постатьям в интернете вроде собрал.Но проблема в том,что функции которые я вызываю из другой прокраммы, возвращают одни и теже значения,не смотря на то что аргументы меняются.Вот не знаю,то ли DLL неправильно собрал,то ли функции не правильно написал.Вот код
Код:
#include "astrodll.h"
#include <stdio.h>
#include <math.h>
//-------------------------------------------------
Тут код не мой,взят из проекта OpenUnivers
определяются функции  вида
void PlanetPos(double,double*,double*,double*)
где вместо Planet - названия планет...

Дальше функции которые я сам приписал и которые собственно экспортируются
//-------------------------------------------------
extern "C"
{
__declspec(dllexport) double retXcoord(int planet,double JD)
{
           double lon=0.0;
    double lat=0.0;
    double rad=0.0;
    switch (planet)
   {
   case 1:
   {MercuryPos(JD,&lon,&lat,&rad);return rad;}
   case 2:
   {VenusPos(JD,&lon,&lat,&rad);return rad;}
   case 3:
   {EarthPos(JD,&lon,&lat,&rad);return rad;}
   case 4:
   {MarsPos(JD,&lon,&lat,&rad);return rad;}
   case 5:
   {JupiterPos(JD,&lon,&lat,&rad);return rad;}
   case 6:
   {SaturnPos(JD,&lon,&lat,&rad);return rad;}
   case 7:
   {UranusPos(JD,&lon,&lat,&rad);return rad;}
   case 8:
   {NeptunePos(JD,&lon,&lat,&rad);return rad;}
   //case 9:
   //{PlutoPos(JD,&lon,&lat,&rad);return rad;}
}return 0;}
__declspec(dllexport) double retLong(int planet,double JD)
{
           double lon=0.0;
    double lat=0.0;
    double rad=0.0;
    switch (planet)
   {
   case 1:
   {MercuryPos(JD,&lon,&lat,&rad);return lon;}
   case 2:
   {VenusPos(JD,&lon,&lat,&rad);return lon;}
   case 3:
   {EarthPos(JD,&lon,&lat,&rad);return lon;}
   case 4:
   {MarsPos(JD,&lon,&lat,&rad);return lon;}
   case 5:
   {JupiterPos(JD,&lon,&lat,&rad);return lon;}
   case 6:
   {SaturnPos(JD,&lon,&lat,&rad);return lon;}
   case 7:
   {UranusPos(JD,&lon,&lat,&rad);return lon;}
   case 8:
   {NeptunePos(JD,&lon,&lat,&rad);return lon;}
   //case 9:
   //{PlutoPos(JD,&lon,&lat,&rad);return lon;}
}return 0;}
__declspec(dllexport) double retLat(int planet,double JD)
{
           double lon=0.0;
    double lat=0.0;
    double rad=0.0;
    switch (planet)
   {
   case 1:
   {MercuryPos(JD,&lon,&lat,&rad);return lat;}
   case 2:
   {VenusPos(JD,&lon,&lat,&rad);return lat;}
   case 3:
   {EarthPos(JD,&lon,&lat,&rad);return lat;}
   case 4:
   {MarsPos(JD,&lon,&lat,&rad);return lat;}
   case 5:
   {JupiterPos(JD,&lon,&lat,&rad);return lat;}
   case 6:
   {SaturnPos(JD,&lon,&lat,&rad);return lat;}
   case 7:
   {UranusPos(JD,&lon,&lat,&rad);return lat;}
   case 8:
   {NeptunePos(JD,&lon,&lat,&rad);return lat;}
   //case 9:
   //{PlutoPos(JD,&lon,&lat,&rad);return lat;}
}return 0;}
}

Вот эти функции я и вызываю из другой программы(на BlitzBasic),но они возвращают в цикле одни и теже значения...Не могу понять почему...
Правильно ли я оформил функции на экспорт?
9.2K
04 июня 2008 года
mikron
27 / / 07.01.2006
Все,разобрался...Извиняюсь что создал тему,ее можно теперь удалить.
Проблема была в несоответствии типов,нету в бейсике double.Бейсик со своими тремя типами взбесил...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог