Ресурсы в статической библиотеке вопрос - PullRequest
6 голосов
/ 09 июня 2010

Это не дубликат ресурсов VC ++ в статической библиотеке , потому что это не помогло:)

У меня есть статическая библиотека с TWO .rc файлами в его проекте. Когда я строю свой проект с использованием конфигурации Debug, я получаю следующую ошибку (MSVS2008):

fatal error LNK1241: resource file res_yyy.res already specified

Обратите внимание, что это происходит только в библиотеках Debug и Release без проблем. Командная строка для страницы Resources в конфигурации проекта выглядит одинаково для каждой сборки:

/fo"...(Path here)/Debug/project_name.res"
/fo"...(Path here)/Release/project_name.res"

и я не могу понять, в чем проблема. Есть идеи?

UPDATE

Я не знаю, почему это происходит, но когда я включаю опцию «Использовать генерацию кода времени соединения», проблема исчезает.

Может кто-нибудь объяснить, почему это происходит? Мне кажется, что MS-компилятор делает что-то действительно странное.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 29 января 2013

Я наткнулся на этот пост, потому что у меня была та же ошибка компоновщика.

Подход, указанный в ответе, вызвал предупреждение компоновщика в моей системе (xyz.res: предупреждение LNK4042: объект указан более одного раза; дополнительные функции игнорируются).

Для меня работало удаление записей " Имя файла ресурса" и "Культура" в конфигурации Свойства / Ресурсы .

4 голосов
/ 10 июня 2010

Решил эту проблему, установив ТОЧНО ОДИН .res выходной файл в настройках. Я на самом деле не уверен, почему все было нормально в режиме Release.

1 голос
/ 27 октября 2015

Я вызвал эту ошибку во время исследования, чтобы получить кучу зависимых проектов для сборки в виде dll из большого набора, которые изначально были настроены для сборки в виде статических библиотек. Я случайно изменил одну из настроек проекта в Project References, чтобы получить здание dll. Повторная проверка того, что мои изменения работали для полной статической конфигурации библиотеки, выявила ошибку ссылки. Поэтому для одного конкретного зависимого проекта, в котором был файл ресурсов для включения информации о версии, у меня был установлен флаг Project Reference Properties: Link Library Dependencies True. Изменение на False исправило ошибку.

Между прочим, мне нужен был только файл ресурсов для версии Dll, поскольку мне действительно нужно было установить зависимости библиотеки ссылок на True, чтобы исправить ошибки компоновщика в сборке Dll. В итоге я исключил файл ресурсов из статической сборки библиотеки, установив Yes в Excluded From Build.

0 голосов
/ 23 июня 2013

Для меня я исправил проблему, перейдя в обозреватель решений и исключив все файлы, а затем повторно «включил в проект» файлы .h и .cpp, которые я использовал

...