Date: 10.04.2021 13:31:29
Date: 12.04.2021 6:06:16
ANSI C и С++ интегрируются вполне нормально, но в объявлениях иногда может понадобиться добавить extern "C", либо указать компилятору, что С нужно собирать как С++. Допустим, у нас есть файл test.c (расширение .с по умолчанию собирается как С)
int CalcSum(int x, int y) { return x + y; }
Тогда в файле main.cpp мы можем вызвать функцию так:
extern "C" int CalcSum(int x, int y); void main() { int res = CalcSum(1, 2); }Либо в свойствах проекта "С++ - Дополнительно - Компилировать как" выбрать С++. Тогда не надо будет прописывать extern "C", но могут вылезти какие-то другие проблемы, учитывая что С и С++ это все же разные языки.
Date: 12.04.2021 6:11:16
"Попробовал построение и DLL"
Вы выполнили все пункты из руководства? В частности:
1. Убедились что в нужных местах функции помечены _declspec(dllexport) или _declspec(dllimport)
2. Подключили .lib файл с разделом экспорта библиотеки к проекту, который использует dll (https://docs.microsoft.com/en-us/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-160#to-add-the-dll-import-library-to-your-project)
Date: 12.04.2021 17:27:48
_declspec(dllexport) должно быть прописано у всех функций, которые экспортируются из dll. Альтернативным способом является .def файл. Если у вас нет ни того ни другого, идею сборки DLL придется отбросить, проект не предназначен для этого.
"dll строится без сбоев."
Видимо, потому что компилятор не проверяет наличие атрибута экспорта на хотя бы одной функции. Но если строится это уже хорошо, значит код совместим с Visual C++
Date: 13.04.2021 3:50:34
SOFA это http://www.iausofa.org/ ? Глянул, там есть makefile для сборки статической библиотеки под Unix, для Windows и Visual C++ стандартно ничего не предоставляется. Есть какие-то неофициальные решения, попробуйте по запросу "sofa library build for windows" в поисковике.
"Хорошо бы почитать что-нибудь с нуля..."
У вас же в первом сообщении есть ссылка не документацию. Перейдите там в корневой раздел и читайте. Только лучше английскую версию, пусть со словарем, так как официальный русский перевод по большей части никуда не годится.
Date: 14.04.2021 6:56:34
Автор: VadimTagil