библиотека, похоже, не связана с опцией целой статической библиотеки [duplicate]

Вы можете увидеть все шаги для подключения базы данных MySQL из приложения Java здесь . Для другой базы данных вам просто нужно изменить драйвер только на первом шаге. Убедитесь, что вы предоставили правильный путь к базе данных и исправили имя пользователя и пароль.

Посетите http://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA

19
задан fschmitt 10 August 2015 в 11:05
поделиться

7 ответов

Насколько мне известно, нет единственного варианта, который надежно гарантирует это. Существуют комбинации оптимизирующих опций, которые (молча) деактивируют это, поэтому никак ... /INCLUDE не работает, но для этого вам нужно извлечь и перекодировать искаженное имя символа. У вас есть два варианта: (1) обеспечить, чтобы все регистраторы содержались (включены) в блок перевода, содержащий main, и обеспечивали их использование. (2) Откажитесь от этой «идиомы» и используйте явную регистрацию.

Внимание: этот ответ сейчас почти 7 лет, и утверждения относительно доступности опций в инструментальной цепочке MSVC ++ устарели. Тем не менее я по-прежнему рекомендую не полагаться на шаблон регистратора и смотреть на альтернативы. Из-за этой рекомендации, пожалуйста, не стесняйтесь голосовать, но я думаю, что это немного несправедливо, потому что этот вариант был добавлен в компоновщик Microsoft. Тем временем

7
ответ дан Paul Michalik 26 August 2018 в 14:49
поделиться

На странице свойств исполняемого файла см. Общие свойства / Ссылки / Использовать вкладки зависимостей библиотеки, установленные в true.

Редактирование: Однако соответствующая библиотека должна быть частью решения.

0
ответ дан colin lamarre 26 August 2018 в 14:49
поделиться

Вы можете использовать с CMake как:

add_executable(hello ${SOURCE_FILES})
target_link_libraries(hello libA libB libC)     # Not need /wholearchive libC 
set_target_properties(hello PROPERTIES LINK_FLAGS "/WHOLEARCHIVE:libA /WHOLEARCHIVE:libB")

Примечание: /WHOLEARCHIVE доступно только для Visual Studio 2015 Update 2+

3
ответ дан ibrahim 26 August 2018 в 14:49
поделиться

Я считаю, что ближайший эквивалент будет /OPT:NOREF .

7
ответ дан Jerry Coffin 26 August 2018 в 14:49
поделиться

Версия Visual C ++ в Visual Studio 2015 Update 2 включает новый флаг в link.exe под названием /WHOLEARCHIVE, который имеет эквивалентную функциональность для опции --whole-archive для ld. Согласно документация флага :

Параметр /WHOLEARCHIVE заставляет компоновщик включать каждый объектный файл из заданной статической библиотеки или если не указана библиотека, из всех статических библиотек, указанных в команде LINK.

19
ответ дан mrry 26 August 2018 в 14:49
поделиться

Я использую / INCLUDE: для принудительного включения неиспользуемых символов.

4
ответ дан plodoc 26 August 2018 в 14:49
поделиться

Я использовал другой подход - вместо того, чтобы компилировать все в .lib, а затем связать это .lib с исполняемым файлом, я связываю исполняемый файл напрямую с файлами .obj.

В CMake, это можно сделать следующим образом:

add_library(common OBJECT ${common_sources})
add_executable(executable1 "main1.cc" $<TARGET_OBJECTS:common>
add_executable(executable2 "main2.cc" $<TARGET_OBJECTS:common>

Изменение любого из файлов в ${common_sources}) только перекомпилирует их эквивалентные объекты и перехватывает исполняемые файлы, что обеспечивает те же преимущества, что и если вы связали вещи через промежуточный .lib. В то же время все статические конструкторы остаются на месте, что устраняет проблему.

Обратите внимание, что это полезно, только если вы ставите статические ссылки.

Этот подход был протестирован с помощью gcc 5.2.0, MinGW-w64 5.2.0 и MSVC 15.

1
ответ дан rr- 26 August 2018 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: