UPDATE:Cygwin установку связи разделяемая библиотека
Удален старый вопрос о .so файлов. Они не предназначены для работы в Windows.
Я решил использовать нижеследующий файл заголовка. Я предполагаю, что это стандартное соглашение по использованию файла .h при каждом соединении с помощью C++?
mydll.h:
#ifndef mydll_h_
#define mydll_h_
void hello();
#endif
myprog.cc:
#include "mydll.h"
int main()
{
hello();
return 0;
}
mydll.cc:
#include <iostream>
void hello()
{
std::cout << "Hello World!\n";
}
Кроме того, я попытался .dll библиотеку с помощью Cygwin с это руководство: https://cygwin.com/cygwin-ug-net/dll.html
Компиляция для их .c файлов работает, но я пытаюсь заставить ее работать для моих файлов .cc. Есть идеи?
mydll.cc:
#include <iostream>
void hello()
{
std::cout << "Hello World!\n";
}
myprog.cc:
int main()
{
hello();
return 0;
}
я напечатал:
g++ -c mydll.cc
g++ -shared -o mydll.dll mydll.o
Но когда я типа:
g++ -o myprog myprog.cc -L./ -lmydll
Я получаю:
myprog.cc: In function ‘int main()’:
myprog.cc:4:10: error: ‘hello’ was not declared in this scope
hello();
«hello» не был объявлен в этой области действия «это не имеет ничего общего с библиотеками. .cc - суффикс файла исходного кода C++. Вам нужно объявить функции на C++. –
В окнах нет «разделяемых библиотек». Есть DLL. Суффикс имени файла по умолчанию для них - .dll. Cygwin не меняет этого. –
Я попытался сменить функции, но при этом появляется такая же ошибка. На ваш второй комментарий, я думаю, это сужает проблему до второй. – Dobob