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

Ваш аккаунт

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

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

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

maple + builder(delphi)

8.8K
02 февраля 2008 года
opex
71 / / 17.01.2007
Нужно написать интерфейс для готовой maple-програмки Как передавать значения из maple в builder и обратно В общем, как связать их?
8.8K
04 февраля 2008 года
opex
71 / / 17.01.2007
Всем большое спасибо за внимание на форуме программистов где я задал конкрентный вопрос и не получил ответа Люди поделитесь знаниями если у кого они есть
92
04 февраля 2008 года
Тень Пса
2.2K / / 19.10.2006
ну наверное ни у кого их нет =) и нехрена язвить "большим спасибо за внимание" :)

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

с удовольствием тебе помог если бы знал что такое Maple =)

поищи фишки Maple, мож есть какиой-то интерфейс для передачи данных... мож поддерживает OLE или еще что...
8.8K
08 февраля 2008 года
opex
71 / / 17.01.2007
Товарищи,вот пример технологии OpenMaple для связи си++(и не только) и maple. Пример демонстрирует вычисление выражения diff(1/x^4+1),x); в Си++ с помощью Maple

Код:
#include <stdio.h>
#include <stdlib.h>


    /* OpenMaple routines are defined here */
   #include "maplec.h"
 
    /* Callback used for directing result output */
   static void M_DECL textCallBack( void *data, int tag, char *output )
   {
       printf("%s\n", output);
   }
     
   int main( int argc, char *argv[] )
   {
       char err[2048];

/* Maple kernel vector - used to start and make calls to Maple.  */
        /* All OpenMaple function calls take kv as an argument. */
       MKernelVector kv;  

       MCallBackVectorDesc cb = {  textCallBack,
                                   0,   /* errorCallBack not used */
                                   0,   /* statusCallBack not used */
                                   0,   /* readLineCallBack not used */
                                   0,   /* redirectCallBack not used */
                                   0,   /* streamCallBack not used */
                                   0,   /* queryInterrupt not used */
                                   0    /* callBackCallBack not used */
                               };

/* ALGEB is the C data type for representing Maple data structures */
       ALGEB r, l;  
 
        /* Initialize Maple */
       if( ( kv = StartMaple(argc, argv, &cb, NULL, NULL, err) ) == NULL ) {
           printf( "Could not start Maple, %s\n", err );
           return( 1 );
       }
 
       /* Compute the derivative of 1/(x^4+1) */
       /* Output goes through the textCallBack() procedure */
       printf( "Compute a derivative: \n\t" );
       r = EvalMapleStatement( kv, "diff(1/(x^4+1), x);" );
 
       /* Evaluate the derivative at x = 3 */
       MapleAssign(kv,
                   ToMapleName( kv, "x", TRUE ),
                   ToMapleInteger( kv, 3 ));
       r = MapleEval( kv, r );
       MapleALGEB_Printf( kv, "\nThe derivative at x=3 is: %a\n", r );
 
       return( 0 );
   }


В Builder я создал cpp файл(File->New->Cpp file) и воткнул туда этот код за что получил:
 
Код:
[Linker Error] Unresolved external '_StartMaple' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_EvalMapleStatement' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_ToMapleInteger' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_ToMapleName' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_MapleAssign' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_MapleEval' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_MapleALGEB_Printf' referenced from E:\...\UNIT1.OBJ


В общем, я взял учебник, где в главе "Ошибки компоновки" прочитал: эти ошибки обнаруживаются на этапе редактирования связей(компоновки) м/ду объектными файлами программы и библиотеками, которые она использует. Как правило, компоновщик выдает сообщение о том, что отсутствует некоторый глобальный символ или, наоборот, таких символов слишком много. Дублирование глобальных символов может иметь место, например, когда забывают объявить некоторую глобальную переменную как extern(внешнюю) или static(с обласьтю действия, ограниченной текущим файлом).

Когда же я, просто в проект Builder (File->New Application), вставляю этот код, то все работает(т.е. прога собирается,форма выскакивает...), но я естесственно не могу посмотреть результата(так как в коде это не описано)

Итак,
1. Есть ли данная ошибка "Linker Error Unresolved external..." ошибка компоновки?
2. Собственно, как быть?
11
08 февраля 2008 года
oxotnik333
2.9K / / 03.08.2007
File=>New=>Consloe Application
вставляешь туда свой код и радуешься жызни
8.8K
09 февраля 2008 года
Se AD WMD
165 / / 10.01.2007
кроме
#include "maplec.h"
надо ещё project->add toproject maple.cpp (или maple.c) (Покрайней мере билдер без этого матерится как у тя.)
8.8K
12 февраля 2008 года
opex
71 / / 17.01.2007
Цитата: Se AD WMD
кроме
#include "maplec.h"
надо ещё project->add toproject maple.cpp (или maple.c) (Покрайней мере билдер без этого матерится как у тя.)


Все бы хорошо, но где же брать maple.cpp(*.c)?
в комплекте с maple данный файлик не идет, а гугл о таком даже не слышал

246
12 февраля 2008 года
GIZMO
1.8K / / 30.07.2004
br /> [Linker Error] Unresolved external '_StartMaple' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_EvalMapleStatement' referenced from
...
Итак,
1. Есть ли данная ошибка "Linker Error Unresolved external..." ошибка компоновки?
2. Собственно, как быть?


FAQ's, Вопрос 16

8.8K
15 марта 2008 года
opex
71 / / 17.01.2007
Использовал FAQ №16
Нашел в папке с мейплом библиотеку maplec.lib, прицепил ее к проекту (Project->Add To Project), получил ошибку:
 
Код:
[Linker Error] 'E:\ПРОЕКТ\MAPLEC.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

Использовал утилиту coff2omf.exe maplec.lib new.lib, прицепил new.lib к проекту, получил те же самые ошибки, что и без библиотеки new.lib:
 
Код:
[Linker Error] Unresolved external '_StartMaple' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_EvalMapleStatement' referenced from...


Следуя FAQ 16, при попытке сделать coff2omf.exe maplec.dll newmaplec.dll возникатет ошибка:
 
Код:
COFF error:maplec.dll
<coffread.cpp,1502>:invalid machine type detected


есть решение?
1
15 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата: opex
Использовал FAQ №16
Нашел в папке с мейплом библиотеку maplec.lib, прицепил ее к проекту (Project->Add To Project), получил ошибку:
 
Код:
[Linker Error] 'E:\ПРОЕКТ\MAPLEC.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

Использовал утилиту coff2omf.exe maplec.lib new.lib, прицепил new.lib к проекту, получил те же самые ошибки, что и без библиотеки new.lib:
 
Код:
[Linker Error] Unresolved external '_StartMaple' referenced from E:\...\UNIT1.OBJ
[Linker Error] Unresolved external '_EvalMapleStatement' referenced from...


Следуя FAQ 16, при попытке сделать coff2omf.exe maplec.dll newmaplec.dll возникатет ошибка:
 
Код:
COFF error:maplec.dll
<coffread.cpp,1502>:invalid machine type detected


есть решение?



Есть конечно. во первых - читать внимательно то что писалось в факе. во вторых - хз, если вы считаете что каждый из программистов обязательно работал с maple и у него есть на чем проверить (или я кинусь искать сразу как эту проблему решить) - то я вас уверяю - это не так. поэтому или разбирайтесь сами или предоставляйте нормально информацию что бы вам могли помочь. Как уже сказано выше - никто никому здесь ничем не обязан - проверьте длл, в конце концов - загрузите ее динамически.

1
15 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата:

coff2omf.exe maplec.lib new.lib


где вы это в факе вычитали остается только догадываться.

8.8K
15 марта 2008 года
opex
71 / / 17.01.2007
Цитата: kot_
Есть конечно. во первых - читать внимательно то что писалось в факе. во вторых - хз, если вы считаете что каждый из программистов обязательно работал с maple и у него есть на чем проверить (или я кинусь искать сразу как эту проблему решить) - то я вас уверяю - это не так. поэтому или разбирайтесь сами или предоставляйте нормально информацию что бы вам могли помочь. Как уже сказано выше - никто никому здесь ничем не обязан - проверьте длл, в конце концов - загрузите ее динамически.



последний вопрос про ошибки компилятора(Unresolved external) не связан только/конкретно с maple,тому доказательство FAQ под номером 16, автором которого вы являетесь, поэтому не понятна ваша ирония по этому поводу. FAQ прочтен внимательно и неоднократно.

8.8K
15 марта 2008 года
opex
71 / / 17.01.2007
Цитата: kot_
где вы это в факе вычитали остается только догадываться.



вот этот товарищ писал тут
http://forum.codenet.ru/showthread.php?t=17940&page=2:

Цитата: Romik
Вариант №1:
implib *.dll *.lib

Получаешь lib-файл для dll. (только сохрани предварительно где-нибудь копии dll и lib файлов)

Вариант №2:
omf2coff last.lib new.lib

Получишь lib-файл в нужном формате.


Только я не помню последовательность исходного/конечного файла в параметрах команд. В подсказке будет указан парядок следования параметров



так как у меня был необходимый lib-файл на который линкер ругался как на возможный coff, я решил что будет правильно применить конвертер coff2omf

1
16 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата: opex
вот этот товарищ писал тут
http://forum.codenet.ru/showthread.php?t=17940&page=2:



так как у меня был необходимый lib-файл на который линкер ругался как на возможный coff, я решил что будет правильно применить конвертер coff2omf


Вы решили не верно - потому как coff2omf служит для конвертирования бинарных файлов из одного формата в другой. Чем отличаются данные форматы информацию я приводить не буду - ее легко найти в интернете. А lib-файл содержит по сути является архивной информацией о адресах экспортируемых функций в исходном файле(это упрощенно естественно). По этому применение к нему утилиты бессмыслено - это все равно как в базе данных рабочих завода поменять пол мастеру Ивану Ивановичу - и на этом основании поздравлять его с восьмым марта. :)
Ошибка, которую вы получаете может быть связана с несколькими причинами - во первых данная длл не предназначена для выполнения на этом процессоре - т.е. в заголовке РЕ-файла должен быть описан тип процессора, и в данном случае утилита не может его идентифицировать (если учесть что инструменты борланда уже изрядно устарели - ничего удивительного здесь нет).
Самое простое - попробуйте для начала сами считать заголовок РЕ-файла. Или используйте какой-либо удобный для вас инструмент - типа PEDUMP. Зачем это нужно? Если вам повезет можно попытаться решить данную проблему установкой подходящего типа процессора вручную. Не забудьте только обязательно сделать копию библиотеки.
Если совсем уж никак - то выложите длл, кто нибудь из участников если будет время посмотрит.
Второе - загрузите длл динамически и не мучайтесь.

8.8K
13 апреля 2008 года
opex
71 / / 17.01.2007
кто-нибудь знает можно ли перевести из формата библиотеки omf в coff и как это сделать?
у меня вeрсия билдера 5.0 Может 6 и выше поддерживают формат coff?
1
13 апреля 2008 года
kot_
7.3K / / 20.01.2000
Цитата: opex
кто-нибудь знает можно ли перевести из формата библиотеки omf в coff и как это сделать?
у меня вeрсия билдера 5.0 Может 6 и выше поддерживают формат coff?


Ты что чудо - с луны упало?
Или читать не умеешь? :D
Выше все написано - что тебе надо еще рассказать?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог