Не смейтесь только. Ошибка все еще есть. ))

vadipok
Дата: 11.09.2014 11:54:55
Добрый день коллеги!

Вчера пришел домой и без проблем установил соединение с Оракл.(Windows XP, Oracle 11XE, VC++2010)
На работе не понос ток судорога.(Windows 7, Oracle 11g локально, VC++2010).
На работе еще стоит клиент Oracle 11g на текущей машине, может из-за этого?

Не смейтесь только, реально я полный 0 в С++.


#include "StdAfx.h"
#include <iostream>
#include "occi.h"

    
using namespace std;
using namespace oracle::occi;

int main(int argc,char* argv[])
  {
  try
    {
    /*
    Создание среды управления памятью и ресурсами для объектов OCCI.
    Предполагается использование объектных расширений - Environment::OBJECT
    */
    //Environment* env = Environment::createEnvironment(Environment::OBJECT);  
	Environment* env;  
	env =  Environment::createEnvironment(Environment::DEFAULT); 
    /*
    Создание соединения с базой данных
    */
    //Connection* conn = env->createConnection("vadim", "vadim", "oracle");
    /*
    Работа с запросом
    */
    //Statement* stmt = conn->createStatement("Select 1 from dual");
    /*
    Получение результатов запроса
    rs->getInt(номер_поля_начинается_единицы)
    */
    //ResultSet *rs = stmt->executeQuery();
    int res = 0;
    /*while (rs->next())
          {
          res = rs->getInt(1);
          }*/
       /*
       Освобождение ресурсов  
       */
    //stmt->closeResultSet(rs);
    //env->terminateConnection(conn);
    //Environment::terminateEnvironment(env);
    }
	catch(SQLException &sqlExcp)
    {
    cerr << sqlExcp.getErrorCode() << " " << sqlExcp.getMessage() << endl;
    }
  return 0;
  }


Текст ошибки
1>------ Построение начато: проект: 13, Конфигурация: Debug Win32 ------
1>  13.cpp
1>13.obj : error LNK2001: неразрешенный внешний символ ""public: static class oracle::occi::Environment * __cdecl oracle::occi::Environment::createEnvironment(enum oracle::occi::Environment::Mode,void *,void * (__cdecl*)(void *,unsigned int),void * (__cdecl*)(void *,void *,unsigned int),void (__cdecl*)(void *,void *))" (?createEnvironment@Environment@occi@oracle@@SAPAV123@W4Mode@123@PAXP6APAX1I@ZP6APAX11I@ZP6AX11@Z@Z)"
1>c:\users\vvf6426\documents\visual studio 2010\Projects\13\Debug\13.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
MasterZiv
Дата: 11.09.2014 12:51:53
vadipok,

Ты не подключил библиотеки OCI при сборке.
Последний пункт из 4-х, обозначенных мной.
vadipok
Дата: 11.09.2014 13:05:03
MasterZiv,

Пробовал, не помогло.
И путь указывал до C:\app\vvf6426\product\11.2.0\client_1\oci\lib\msvc\
По всякому делал.
Дома работает именно так, как показано.

Час притащил библиотеки из дома, попробую через них.
vadipok
Дата: 11.09.2014 13:52:08
После замены папки oci из Oracle 11 XE приложение начало компилится без ошибок.
Но теперь ломается на этапе выполнения.
"13.exe": Загружено: "C:\Users\vvf6426\Documents\Visual Studio 2010\Projects\13\Debug\13.exe", Символы загружены.
"13.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"13.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"13.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll", Невозможно найти или открыть файл PDB
Программа "[8968] 13.exe: Машинный код" завершилась с кодом -1073741701 (0xc000007b).
MasterZiv
Дата: 11.09.2014 14:11:08

On 11.09.2014 14:52, vadipok wrote:

> Но теперь ломается на этапе выполнения.
>
> "13.exe": Загружено:"C:\Users\vvf6426\Documents\Visual Studio 2010\Projects\13\Debug\13.exe", Символы загружены.
> "13.exe": Загружено:"C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
> "13.exe": Загружено:"C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
> "13.exe": Загружено:"C:\Windows\SysWOW64\KernelBase.dll", Невозможно найти или открыть файл PDB

это выше -- не ошибки.

> Программа"[8968] 13.exe: Машинный код" завершилась с кодом -1073741701 (0xc000007b).

А вот это -- ошибка, нужно запускать в отладчике и смотреть, что там.

Библиотеки OCI (*.dll) должны быть в путях, доступных для загрузки
библиотек (переменная PATH). Это делается при нормальной установке
Oracle client.

Posted via ActualForum NNTP Server 1.5

vadipok
Дата: 11.09.2014 14:55:59
MasterZiv
On 11.09.2014 14:52, vadipok wrote:

> Но теперь ломается на этапе выполнения.
>
> "13.exe": Загружено:"C:\Users\vvf6426\Documents\Visual Studio 2010\Projects\13\Debug\13.exe", Символы загружены.
> "13.exe": Загружено:"C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
> "13.exe": Загружено:"C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
> "13.exe": Загружено:"C:\Windows\SysWOW64\KernelBase.dll", Невозможно найти или открыть файл PDB

это выше -- не ошибки.

> Программа"[8968] 13.exe: Машинный код" завершилась с кодом -1073741701 (0xc000007b).

А вот это -- ошибка, нужно запускать в отладчике и смотреть, что там.

Библиотеки OCI (*.dll) должны быть в путях, доступных для загрузки
библиотек (переменная PATH). Это делается при нормальной установке
Oracle client.


В PATH вроде все есть
C:\app\vvf6426\product\11.2.0\client_1\bin;
C:\app\vvf6426\product\11.2.0\client_1;
C:\app\vvf6426\product\11.2.0\dbhome_1\bin;
%C_EM64T_REDIST11%bin\Intel64;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

В режиме отладчика я сразу попробовал, он туда даже на 1-ю строчку не заходит.
SashaMercury
Дата: 12.09.2014 04:25:47
MasterZiv,
я всё равно не согласен с этой политикой. Ладно бы человек писал эту программу C#, Java или другом языке(практически не зная этого языка). Тогда можно писать что угодно и как угодно, особенно не вникая в то, как это работает, и почему это так работает.
Семейство языков C/C++ особенное, и к этому семейству так относится нельзя. А Сообщество способствует этому отношению автора топика к данному языку.

Качественный, хороший продукт так не создаётся. А на языках С/С++ нельзя создавать что-нибудь другое. Нельзя создавать какие-то серьёзные программы не зная этих языков достаточно глубоко. Этим инструментом, обычный человек/специалист в области IT не имеет права пользоваться, в таком случае.
SashaMercury
Дата: 12.09.2014 04:32:25
Подчеркну, что ничего не имею против vadipok. И вообще тепло отношусь ко всем тем кто заинтересован в изучении этих языков. Но я не согласен как с его политикой, так и отношением Сообщества. Только я рекомендовал ему изучать язык нормально и не лезть в дебри слишком рано. С/С++ это не метла, чтобы взять её и начать собирать мусор.
White Owl
Дата: 12.09.2014 04:54:19
SashaMercury,

Ты не прав.
Идеализм это хорошо, но увы.
vadipok
Дата: 12.09.2014 08:04:32
Спасибо за совет!
Обязательно прислушаюсь к вашему мнению.

Ошибку нашел кстати вчера:
http://www.oracle.com/technetwork/database/occidownloads-083553.html
А у меня: 11.2.0.1.0