2014-02-18 4 views
0

У меня есть проект C в visual studio, который называется «Framework».Образец заголовка Visual Studio и исходные файлы

Предполагается, что в рамках проекта Framework будет использоваться общий код, который должен использоваться совместно между различными проектами.

У меня также есть другой проект (назовем его A), который должен использовать код из Framework.

Допустим, проект Framework имеет заголовок с именем DAL.h, а внутри него - декларация функции OpenFile, эта функция реализована в DAL.c.

Я пытаюсь включить DAL.h в мой проект и использовать OpenFile, но я получаю следующее сообщение об ошибке: неразрешенный внешний символ _OpenFile

Я понимаю, что компилятор не удалось найти реализацию OpenFile.

Мой вопрос в том, что является лучшей практикой в ​​случае, подобном описанному здесь?

Должен ли я «Добавить существующий элемент» и добавить DAL.c в мой проект? (Это исправляет ошибку ..)

Я попытался добавить папку, содержащую DAL.c, в «Дополнительные папки источника», но это не помогло.

Большое спасибо, Michael.

ответ

1

Чтобы использовать скомпилированный код функции OpenFile, он должен где-то существовать.

Вы, кажется, есть два варианта:

1) Если вы хотите, скомпилированный код, чтобы быть частью бинарного, вам нужно будет включать в себя исходный файл, поэтому он может быть собран как часть вашего проекта.

2) Если вы не хотите, чтобы он был встроен в ваш проект, и из-за его звука вы не знаете, что это «общий код, который должен быть разделен между различными проектами», «Рамочный проект "должен скомпилироваться в библиотеку. В этом случае вам нужно будет включить только заголовочный файл DAL.h и импортировать библиотеку проекта «Framework» в свой проект, чтобы ваш проект мог связать вызов OpenFile с реализацией в библиотеке.

+0

Я хочу, чтобы исходный код OpenFile был частью моего двоичного файла. Я не хочу использовать дополнительные библиотеки (не хочу использовать dll). Является ли единственным вариантом включить исходный файл в качестве части проекта? Это своего рода уродливое решение. Нет ли способа, чтобы компилятор мог найти исходный код сам? Потому что я добавил файл заголовка. – Michael

+1

@MichaelEngstler: Если вы хотите, чтобы источник был частью вашего проекта, вам нужно будет сделать исходную часть вашего проекта. Исходные файлы включают файлы заголовков, файлы заголовков не включают исходные файлы. Кроме того, есть ли конкретная причина, по которой вы не можете использовать dll, кроме того, чего вы не хотите? Ваша ситуация в значительной степени зависит от того, для чего они предназначены, это может сделать вашу жизнь намного проще ... – parrowdice