Visual C++ 2008 экспресс-создание библиотеки

Я знаю, что многие задавали этот вопрос, но, похоже, мне не помогли предложенные вещи. Поэтому я подумал, что попрошу помощи, так как я явно что-то упускаю.

Последние пару дней я потратил на написание кода, который использует библиотеку boost, которая позволяет мне открывать текстовые файлы, переводить текст в пригодный для использования формат данных и сохранять данные в виде текстового файла, когда я закончу с этим. Я создал его специально, чтобы его можно было расширять для работы с различными типами данных (в частности, с любым объектом или классом, который я создаю в будущем), чтобы я мог ссылаться на него как на библиотеку в своем проекте, как и на другие библиотеки.

Однако даже после компиляции его в библиотеку и добавления каталога библиотеки в «Дополнительные каталоги включения» я получаю неразрешенную внешнюю ошибку всякий раз, когда пытаюсь включить один из файлов заголовков в библиотеку. Я также попытался указать прямой путь к нему в разделе «Дополнительные зависимости» (а также просто имя библиотеки с путем к каталогу, установленному в «Дополнительных каталогах включения» и «Дополнительных каталогах библиотек». время, и это все еще не удалось).

Есть что-то, что мне не хватает? Как я могу скомпилировать этот код, который я хотел бы использовать повторно, и связать его в новых проектах, не копируя каждый раз файлы cpp и h в свое решение? Будет ли DLL работать лучше/проще? Если да, то как мне скомпилировать его как dll и связать с ним?

Спасибо, что прочитали эту стену текста. Любая помощь, которую вы могли бы оказать, была бы здоровой.


person Legacyblade    schedule 16.01.2013    source источник
comment
Вы случайно не используете шаблоны для работы с разными типами данных? Они должны быть определены в заголовках, не могут быть реализованы в cpp (если вы заранее не знаете все типы, с которыми вы хотите их использовать)   -  person Eugene    schedule 16.01.2013
comment
Сообщите нам, что такое неразрешенные внешние факторы, и если неясно, связаны ли они с вашим кодом или с повышением.   -  person Retired Ninja    schedule 16.01.2013
comment
@Eugene, я настроил методы таким образом, что могу создать дочерний класс, методы которого построены так, чтобы он реагировал на определенный тип данных и сохранял их таким образом. Мне просто нужно изменить несколько вещей в том, как ребенок обрабатывает данные.   -  person Legacyblade    schedule 16.01.2013
comment
@RetiredNinja, c:\users\legacyblade\documents\visual studio 2008\projects\testoflblib\testoflblib\main.cpp(1): фатальная ошибка C1083: невозможно открыть включаемый файл: 'config_data_holder.h': такого файла или каталога нет. Строка включения, о которой идет речь, — это #include config_data_holder.h config_data_holder.h — это один из заголовков в проекте, который я скомпилировал в библиотеку.   -  person Legacyblade    schedule 16.01.2013
comment
Ах, это отсутствующий заголовок, а не неразрешенный внешний. Вы даже не прошли компиляцию. :) Посмотрите на строку cmd вашего компилятора и убедитесь, что пути -I соответствуют вашим ожиданиям.   -  person Eugene    schedule 16.01.2013
comment
Я не совсем уверен, что это значит. Что такое -l пути? Как мне установить их в визуальной студии? Это то, что я делаю при создании файла lib или при настройке проекта, который использует указанный файл lib? Есть ли известный вам учебник, в котором подробно рассматриваются эти темы (и с использованием Visual С++ Express 2008? Это единственный, с которым мне когда-либо везло работать)   -  person Legacyblade    schedule 16.01.2013
comment
Если бы я использовал описанный здесь процесс (programmingexamples.wikidot.com/blog:1), , будет ли полученная DLL совместима с разными платформами? Я знаю, что это не так (он использует StdAfx.h и pragma один раз), но будет ли DLL работать для программы на Linux или Mac?   -  person Legacyblade    schedule 16.01.2013


Ответы (1)


Ok. Хотя это не совсем то решение, к которому я стремился, мне удалось это понять. Для тех, кто сталкивается с этой проблемой, есть замечательный учебник, в котором объясняется, как создавать файлы DLL и использовать их (по крайней мере, в Windows нет компьютеров, использующих альтернативную ОС, настроенную для тестирования DLL). Вы можете найти это здесь.

http://programmingexamples.wikidot.com/blog:1

Суть проблемы в том, что вам также необходимо иметь под рукой копию файла .h, чтобы включить его в свой проект. (что я сделал, так это создал каталог на моем диске C, в котором хранятся библиотеки, которые я создаю, и в нем у меня есть папка для файлов .lib и папка для файлов .h.) Либо импортируйте файл .h напрямую в каталог проекта или добавьте его в свойства проекта (C++ -> General -> Additional Include Directorys). Убедитесь, что вы ссылаетесь на каталог, а не на сам файл. В линкере нужно добавить свой .lib файл в раздел Additional Dependencies (Linker -> Input -> Additional Dependencies). Вы можете указать здесь весь путь или просто указать имя файла, а затем указать программе, где найти каталог, в котором он находится (добавьте путь к каталогу в Linker -> General -> Additional Library Directorys)

Надеюсь, это поможет всем, кому удалось пропустить что-то, что все остальные, кажется, понимают инстинктивно: P

person Legacyblade    schedule 16.01.2013