как объяснить, что он кратчайший с помощью алгоритма Дейкстры?
По определению алгоритма Дейкстры же -- если алгоритм находит кратчайшие пути от одной из вершин в графе ко всем остальным, то путь найденный алгоритмом от одной вершины до другой -- кратчайший по определению.
A prvalue of arithmetic, unscoped enumeration, pointer, or pointer-to-member type can be converted to a prvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false; any other value is converted to true.
См. сюда и сюда.
Igareck7777, ок, первые две строчки -- это оно. Со сборкой всё ок.
Давай смотреть на то, что main.o ожидает и получает -- покажи вывод mingw32-nm main.o и mingw32-nm fun.o.
Покажи лог сборки целиком.
Если со сборкой всё в порядке, то, возможно, сторона с++ ожидает, что foo будет определена с ведущим подчерком (_foo) -- смотри в вывод nm main.o.
Кирилл, вообще теперь ты делаешь что-то явно странное -- если ты просто взял конфиг от одного ядра и тупо применил его к другому, нет особых гарантий что всё будет работать.
Запустить программу под strace -f, посмотреть что она делает перед тем как упасть.