Решение Visual Studio с несколькими проектами не компилируется - PullRequest
1 голос
/ 13 января 2012

Я впервые сделал программу в eclipse (компилятор mingw).Сейчас я перевожу код в Visual Studio 2008. Это одно решение с несколькими проектами.2 проекта предназначены для запуска (консольной) программы.Другие 2 проекта являются вспомогательными классами для тех.Я установил зависимости проекта, чтобы проекты компилировались в правильном порядке.Теперь я получаю сообщения об ошибках LNK2019 и LNK1120, потому что у меня нет main в проекте помощника.Я пытался скомпилировать вспомогательные проекты без ссылок, но я не могу понять, как мне это сделать.Я попытался добавить параметр компилятора -c, но безуспешно.Я также пытался добавить бесполезную основную часть в проект помощника, но затем компиляция завершается неудачно при компиляции реальной основы с «функцией не может быть перегружено».главный?

Ответы [ 3 ]

3 голосов
/ 13 января 2012

Если вы хотите создать вспомогательную библиотеку, вы должны использовать тип проекта Class Library вместо Console Application

1 голос
/ 13 января 2012

Вы можете скомпилировать свои помощники как статические библиотеки и связать их с вашими основными программами.

0 голосов
/ 13 января 2012
  1. Щелкните правой кнопкой мыши проект (ы) в обозревателе решений, чтобы скомпилировать их независимо от всего решения. Вы также можете построить их отдельно, что выполняет как компиляцию, так и компоновку.

  2. В Windows (я не уверен насчет Linux), для DLL все еще требуется точка входа. Условное название - DllMain. Если вам не нужна точка входа, вам следует создать статическую библиотеку вместо DLL, которая будет связана с вашим приложением во время соединения, а не динамически загружаться во время выполнения.

    Вам нужно будет изменить свойства вашего проекта, чтобы сообщить ему, что вы сейчас создаете статическую библиотеку, а не динамическую библиотеку. Это остановит компоновщик от поиска функции main. это прохождение может оказаться полезным .

    Ошибка «функция не может быть перегружена», по-видимому, из-за того, что добавленная вами фиктивная функция main имеет / имеет неправильную подпись.

...