Я столкнулся с точно таким же поведением:
Я использую Oracle XE и MS SQL Server Express на моем 64-битном ПК с Windows 7 - я обновился до java 1.6.0_29 с 1.6.0_27 (версия x64) и был удивлен, увидев, что те же программы могут подключаться к Oracle XE, но не к MS SQL Server ...
Я проследил проблему до javax.sql.DataSource.getConnection()
, где она висела навсегда - потому что это всего лишь интерфейс, драйверы jdbc вызвали у меня подозрения ...
Я использую драйвер JDBC для MS SQL Server 3.0.1301.202 и даже обновился до CTP-версии SQL Server («предварительный технический обзор сообщества») 4.0.1722.1, потому что я подозревал, что он должен что-то делать с драйвером jdbc но безуспешно: все еще висит!
Мой обходной путь должен был понизиться до 1.6.0_27 и - bang: все снова было хорошо!
С наилучшими пожеланиями, Эрих
Вам необходимо включить файл заголовка в ваше приложение и связать его с ним.
Посмотрите, как использовать библиотеки в разделяемых библиотеках и Linux howto .
Если файл заголовка находится не в том же каталоге, что и ваше приложение (а это обычно не так), вам нужно указать компилятору, где его искать, вы используете -I / path / to / include
, чтобы указать путь к подключаемому каталогу, который содержит файл заголовка.
На этапе связывания вам необходимо указать на библиотеку. Обычно используется -L / path / to / lib
- это путь к каталогу, содержащему вашу библиотеку, за которым следует -l
, где
- это имя библиотеки без lib
, например, если у вас есть libboost_serialization-d-1_34_1. поэтому
вы должны использовать -lboost_serialization-d-1_34_1
Примеры:
g++ -I/sw/include -Wall -g -I/usr/local/include/boost-1_36/ -c main.cpp -o main.o
g++ -L/sw/lib -lboost_serialization-d-1_34_1 -o x main.o
Вы также изменили путь включения (параметр -I), чтобы он знал где искать заголовки библиотеки? Если вы этого не сделали, компилятор будет жаловаться на то, что не может найти функции / классы / структуры / и т. Д.