Я пытаюсь создать C ++ Avro API как DLL, чтобы я мог использовать сгенерированные Avro заголовочные файлы в проекте Visual Studio.Я могу собрать Avro в Windows с помощью Cygwin, поэтому следующий шаг - преобразовать Avro API в DLL и использовать его вместе с cygwin1.dll
в моем проекте (не совсем понятно, как это будет работать).
Я смотрел на различные онлайн-руководства по , как собрать DLL с помощью cmake (от VTK) (поскольку cmake обычно используется для сборки Avro), и я хотел убедиться, чтото, что я пытаюсь сделать, на самом деле выполнимо, прежде чем тратить кучу времени, пытаясь это сделать.Я также заметил, что руководство cygwin указывает, что компилятор gcc уже может создавать библиотеки DLL:
gcc -shared -o mydll.dll mydll.o
Обычно в окнах мы должны указывать, какие функции / классы должны быть экспортированыпри необходимости используйте атрибут __declspec(dllexport)
.Кто-нибудь может уточнить, как все это должно собираться вместе:
- Чтобы собрать мою DLL с помощью Cygwin, нужно ли помечать все функции / классы атрибутом экспорта, как показано в VTKруководство или я могу просто сделать что-то, чтобы сказать компилятору gcc вывести DLL без использования атрибутов экспорта (т.е. изменить параметры cmake в файле
CMakeList.txt
)? - Как только я сгенерирую DLL из cygwin, тогдав моем проекте Visual Studio я должен ссылаться на
my.dll
и cygwin1.dll
?Это " так просто " или я что-то упустил?
Если мне нужно пометить все функции / классы в Avro атрибутом экспорта, то я могу себе это представитьбудет значительно более сложной задачей, поскольку Avro имеет приличное количество классов .Если я не помечаю функции / классы атрибутом экспорта и использую GCC для вывода DLL, будут ли сгенерированы необходимые символы экспорта, чтобы их можно было использовать в проекте VS?