Для написания программы с применением математических алгоритмов я использовал трансляцию Matlab'овского файла в C++. Но при компиляции с Matlab'овскими h-файлами возникает проблема. Во-первых, есть строчка
#include <iostream.h>
но он этот файл не находит. Пробую закомментировать эту строчку, но тогда в строчке
inline ostream &operator<<(ostream &os, const mwException &except)
он выдаёт, что пропущено ; перед &.
Подскажите, пожалуйста, как избавиться от этих ошибок и скомпилировать такую программу.
Спасибо, работает! Но осталась ещё небольшая проблема, одна подпрограмма в Matlab'овском коде написана весьма сомнительным образом
inline mwArray pascal(const mwArray &in1=mwArray::DIN, const mwArray &in2=mwArray::DIN)
{
MatlabMatrix *prhs[2];
prhs[0] = (!in1.IsDIN())?in1.GetData()MatlabMatrix*)(NULL);
prhs[1] = (!in2.IsDIN())?in2.GetData()MatlabMatrix*)(NULL);
return mlfPascal(prhs[0], prhs[1]);
}
и компилятору не нравится скобка ( . Как б сие исправить так, чтоб всё работало?
Re[3]: VS 2003 не находит iostream.h, не признаёт &
Здравствуйте, Ilya81, Вы писали:
I>и компилятору не нравится скобка ( . Как б сие исправить так, чтоб всё работало?
А в каком именно месте?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: VS 2003 не находит iostream.h, не признаёт &
Здравствуйте, Awaken, Вы писали:
I>>и компилятору не нравится скобка ( . Как б сие исправить так, чтоб всё работало?
A>нихрена не понятно, скопируй правильно текст. наверное там был оператор ?: ? A>внизу когда пишешь сообщение есть чек-бокс "отключить смайлики", если что
Но всё равно не понятно что не так со скобками. Даже в какой строке не понятно, на самом деле :)
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: VS 2003 не находит iostream.h, не признаёт &
I>>>и компилятору не нравится скобка ( . Как б сие исправить так, чтоб всё работало?
A>>нихрена не понятно, скопируй правильно текст. наверное там был оператор ?: ? A>>внизу когда пишешь сообщение есть чек-бокс "отключить смайлики", если что
E>Скорее всего было так:
I>>На строку заголовка, где с inline начинается, указывает компилятор, заявляя syntax error : '('. Затем ещё на {, заявляя missing funtion header.
СЗ>Твой компилятор обрабатывает слово `pascal' как `reserved word'
А если еще точнее, то он воспринимает `pascal' как calling convension а имя функции тогда просто у тебя отсутствует
Замени по коду pascal на pascal_
Re[8]: VS 2003 не находит iostream.h, не признаёт &
I>>>На строку заголовка, где с inline начинается, указывает компилятор, заявляя syntax error : '('. Затем ещё на {, заявляя missing funtion header.
СЗ>>Твой компилятор обрабатывает слово `pascal' как `reserved word'
СЗ>А если еще точнее, то он воспринимает `pascal' как calling convension а имя функции тогда просто у тебя отсутствует :-) СЗ>Замени по коду pascal на pascal_
Здравствуйте, Ilya81, Вы писали:
I>Спасибо, компиляция сработала, но вот ошибки компоновки мне исправить никак не удаётся. Полагаю, что тут нужно смотреть целый проект, так что выкладываю его http://rapidshare.com/files/63395168/SplineSmooth.rar.html .
Залей куда-нибудь в другое место, а то архив так никто и не скачает
T>Здравствуйте, Ilya81, Вы писали:
I>>Спасибо, компиляция сработала, но вот ошибки компоновки мне исправить никак не удаётся. Полагаю, что тут нужно смотреть целый проект, так что выкладываю его http://rapidshare.com/files/63395168/SplineSmooth.rar.html .
T>Залей куда-нибудь в другое место, а то архив так никто и не скачает :)
T>P.S. Я бы попробовал помочь, но скачать не могу.
Rapidshare плохо ко мне относится лично, так что я его не люблю.
По поводу проекта — у меня выдало 32 unresolved externals. Если они и имелись в виду — тогда объяснение просто — какие-то библиотеки просто не подключены. А то cpp файлов всего два. Теперь по поводу общих проблем, что там есть.
1. Там два cpp файла, но один не используется. У меня создалось впечатление, что кто-то просто скопировал часть одного cpp файла в другой. Я прав?
2. Часть классов(как я понял — это реализация классов, которые используются в Matlab) написана на cpp (реализация прямо в хедерах, но не в этом суть). Часть объявленных функций нигде не реализовано(например, operator= у mwArray реализацию я так и не нашёл). Возможно, что-то криво сгенерировалось. Или где искать эти реализации? Если она объявлена, значит нельзя положиться на стандартную реализацю, плюс там какая-то муть со статическими членами.
Добавка: возможно, все сгенерено правильно и таким образом программеры пытались запретить копирование mwArray. Но тогда почему оно в public? Там ТС ничего не делал?
3. Для каких компиляторов это создавалось? И какие рекомендации по подготовке проекта были(если они есть в документации к генератору)? Ибо написано вроде кросс-платформенно, под разные компайлеры, но дефайны слегка кривые.
<вырезано, дабы сохранить место на сервере>
Re[12]: VS 2003 не находит iostream.h, не признаёт &
Документации по этой функции мало (всё что написано http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/index.html?/access/helpdesk/help/toolbox/compiler/mcc.html&http://www.mathworks.com/cgi-bin/texis/webinator/search/?db=MSS&prox=page&rorder=750&rprox=750&rdfreq=500&rwfreq=500&rlead=250&sufs=0&order=r&is_summary_on=1&ResultCount=10&query=mcc), там не ясно с версиями, но в каталогах Matlab я нашёл несколько lib-файлов для VC++ 6. Вот не знаю, вроде должны приниматься следующей версией компилятора, но после их добавления в References ничего не меняется, выдаёт те же ошибки. А если учесть, что DLL нужно делать по определённому образцу, то получается сложно. Не знаю, упростится ли ситуация, если найти 6-ю версию VC++.
I>>Попробовал сюда http://files-upload.com/files/568638/SplineSmooth.rar (но вообще страно, rapidshare считаю самым надёжным).
T>Rapidshare плохо ко мне относится лично, так что я его не люблю. :)
T>По поводу проекта — у меня выдало 32 unresolved externals. Если они и имелись в виду — тогда объяснение просто — какие-то библиотеки просто не подключены. А то cpp файлов всего два. Теперь по поводу общих проблем, что там есть.
T>1. Там два cpp файла, но один не используется. У меня создалось впечатление, что кто-то просто скопировал часть одного cpp файла в другой. Я прав? :) T>2. Часть классов(как я понял — это реализация классов, которые используются в Matlab) написана на cpp (реализация прямо в хедерах, но не в этом суть). Часть объявленных функций нигде не реализовано(например, operator= у mwArray реализацию я так и не нашёл). Возможно, что-то криво сгенерировалось. Или где искать эти реализации? Если она объявлена, значит нельзя положиться на стандартную реализацю, плюс там какая-то муть со статическими членами. T>Добавка: возможно, все сгенерено правильно и таким образом программеры пытались запретить копирование mwArray. Но тогда почему оно в public? Там ТС ничего не делал? :) T>3. Для каких компиляторов это создавалось? И какие рекомендации по подготовке проекта были(если они есть в документации к генератору)? Ибо написано вроде кросс-платформенно, под разные компайлеры, но дефайны слегка кривые.
Re[13]: VS 2003 не находит iostream.h, не признаёт &
Здравствуйте, Ilya81, Вы писали:
I>Я вписал эти строки в основной файл, количество неразрешённых зависимостей сократилось до 11. Попробовал вписать в другой файл — сократилось до 10. Но пробую в остальные — дальше не сокращается. Не знаю, как определить, в какие файлы вписывать. Вот такой нынешний вид http://files-upload.com/files/570566/SplineSmooth.rar
Вписывать — в один файл, должно хватить. По поводу остальных 10 unresolved externals — еще вначале писал, что реализация класса mwArray — не полная. Файл dblmtrx.h — не полный. А точнее, я бы еще поискал dblmtrx.cpp. Если оно изначально так было, то возможно два варианта:
1. Коряво сгенерировалось
2. Где-то еще лежит часть реализации, нужно ее только найти и подключить.
Если же файл dblmtrx.h правился, то лучше вернуть всё на место
P.S. Кроме mwArray еще не находит куска реализации в mwLibraryInitBuiltins — деструктора.