Помогите разобраться в проблеме импорта функции из dll - страница 8

 

Почитал Гугл и похоже, что врубился по поводу stdafx.h :-))

М...да... век живи - век учись... :-)

 

Да-да.

Достаточно часто первая ссылка содержит все, что нужно.

 

Интересно... а в Билдере 6 действительно на stdafx.h файл никто не ругается, всего 17 предупреждений и файл весит в 2 раза меньше.

М...да уж...

Теперь у меня 2, на первый взгляд, рабочие библиотеки :-). Буду проверять их как они работают с данными. Очень надеюсь на положительный результат :-)))

 
jartmailru писал(а) >>

М-м-м... Ну, как бы, нужно сунуть в проект все файлы,

которые Вы мне прислали.

.

Мне, честно говоря, даже в голову бы не пришло задумываться,

какой *один файл* из набора файлов, входящих в *библиотеку*,

нужно добавить в проект.

Я думал, что они автоматически подтягиваются по цепочке через h-файлы. Первый раз же, используя только файл svd.cpp, я скомпилировал и слинковал, ошибок не было, пока не добавил extern. В svd.cpp есть ссылка на его h файл, а в нем ссылки на другие h файлы, а те используют одноименные cpp файлы. Вроде бы всё логично, как мне казалось. Просто хочу немного оправдаться, чтобы у Вас не появилось мысли, что я совсем туп :-)). Обидно же, когда о тебе такое мнение :-)). Шутка :-))

 
boysn >>:

Я думал, что они автоматически подтягиваются по цепочке через h-файлы. Первый раз же, используя только файл svd.cpp, я скомпилировал и слинковал, ошибок не было, пока не добавил extern. В svd.cpp есть ссылка на его h файл, а в нем ссылки на другие h файлы, а те используют одноименные cpp файлы. Вроде бы всё логично, как мне казалось. Просто хочу немного оправдаться, чтобы у Вас не появилось мысли, что я совсем туп :-)). Обидно же, когда о тебе такое мнение :-)). Шутка :-))

Для того, чтобы не сделаь такой ошибки, нужно знать вот это:

* Зачем делить файлы на .CPP / .H

* Отличие декларации функции от объявления

* Зачем нужны ключевые слова inline / template- что они дают

* Что будет, если объявлять функции внутри объявления класса

* Назначение компиляции и линковки

* Отличие и назначение .OBJ / .LIB / .DLL / .EXE

* Статическая и динамическая линковка

* Что такое Linker error = Unresolved function

* Что такое Linker error = Multiple symbol

* По какому принципу линкер собирает бинарный файл

* Что дает слово extern

.

Ну так вот где-то.

 
jartmailru >>:
* Отличие декларации функции от объявления.

Ну, декларация и объявление это то же самое :).

объявление - определение (declaration -- definition).

 

Да... я уж понял, что был не прав... Ничего, будем учиться...

По поводу полученной dll... К сожалению, она пока не оправдала моих надежд :-), т.е. сходу, конечно, не дала результата. В принципе, было бы очень великолепно, если бы сходу.

Увы, чудес не бывает... :-)

Попробовал дать ей на вход квадратную матрицу 3х3. Какой должен быть результат на выходе я знаю из примера. К сожалению, на выходе сингулярные значения по нулям, а выходные матрицы из векторов - единичные.

Т.е. вроде бы чего то делается, но непонятно чего... Насколько я понял, внутри dll писать выводную информацию нельзя... типа print("a["+i+"]", a[i]), т.к. он её не будет выводить... Это я сужу по самому первому примеру в этой теме...

Там была функция printf("GetDoubleValue takes %.8lf\n",dpar);

Никакая информация в журналы в метатрейдера не выводилась, выводилось только возвращённое значение функции (return)

т.е. как я понимаю, так мне её не отладить, да? или я опять чего то закосячил?

Сейчас пробую создать не dll проект, а exe, т.к. Вы мне сказали, что ехе проекты проще отлаживать..

Правда там появляется функция WinMain и чего то я пока не соображу как мне мой проект правильно состыковать для ехе проекта...

И пока ещё не разобрался через какие функции вывода и через какие инструменты мне лучше отлаживать... Читаю сейчас Архангельского...

 
TheXpert >>:

Ну, декларация и объявление это то же самое :).

объявление - определение (declaration -- definition).

Спасибо за ошибку. По-английски то я знаю :-).

 
boysn >>:

Правда там появляется функция WinMain и чего то я пока не соображу как мне мой проект правильно состыковать для ехе проекта...

И пока ещё не разобрался через какие функции вывода и через какие инструменты мне лучше отлаживать... Читаю сейчас Архангельского...

А Вы, товарищ, напишите тестовый код с Вашей матрицей 3 на 3 и дебажным выводом- и все у Вас получится.

Главное, учтите, что для printf() нужно *консольное* приложение.

 
Да, буду пробовать...
Причина обращения: