powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема со связкой C++ & Cache (Caché C++ Binding)
7 сообщений из 7, страница 1 из 1
Проблема со связкой C++ & Cache (Caché C++ Binding)
    #37494240
DarkKnight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, сталкнулся с проблемой при кашовском класс-бинде и C++.
Коротко о системе:
Windows 7 x64

Visual Studio 2010

Cache2011.1 (dll и libы использую тоже от нее)

Собираю приложение, при вызове функции коннкета приложение отваливается, сборка/линковка + обращения к дин. библиотеки проходит на ура.

Пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <iostream>
#include <Windows.h>

#include "cppbind.h"
#include "database.h"


#pragma comment(lib,"cppbind_msvc90.lib")

using namespace std;

int main(void)
{
	setlocale(LC_ALL,"Russian");
    Db_err conn_err;
	d_connection conn;
	try{
		conn = tcp_conn::connect("localhost[1972]:User","_SYSTEM", "SYS",  0 , &conn_err);
	}catch (...)
	{
		cout << "Что то не так";
	}

	return  0 ;
}
*Результат работы без обработки исключений в прикрепл. файле.

Хочется узнать, может кто-то сталкивался с подобной проблемой, или знает что это и как это лечиться.
Заранее благодарен всем ответившим.
...
Рейтинг: 0 / 0
Проблема со связкой C++ & Cache (Caché C++ Binding)
    #37495459
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkKnight ,

Ошибка возникает, потому что Вы пытаетесь использовать библиотеки cppbind_msvc90.lib/cppbind_msvc90d.lib (от версии 2008) применительно к версии 2010.

Чтобы заработало сделайте следующее:

1) откройте в VS2010 проект
Код: plaintext
%CacheHome%\dev\cpp\src\modules\cpp\lib\msvc10_0\cpp_binding.vcxproj

2) соберите проект для разных конфигураций. В итоге получите файлы cppbind_msvc10_0.dll, cppbind_msvc10_0d.dll, cppbind_msvc10_0.lib, cppbind_msvc10_0d.lib и т.д.

3) в своём проекте замените cppbind_msvc 90 .lib на cppbind_msvc 10_0 .lib

и всё заработает.
...
Рейтинг: 0 / 0
Проблема со связкой C++ & Cache (Caché C++ Binding)
    #37496871
DarkKnight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Спасибо Вам огромное за подсказку, помогите пожалуйста со следующим вопросом.

Как вы и советовали собрал "либы", но собрались они увы не все конфигурации winit - не собралась.

Ситуация теперь в следующем, коннект прекрасно проходит, но стоит обращаться к bind-проекциям Cache, компилятор ругается на линковку:
автор
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
1>  Для всех выходных данных обновления не требуется.
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall InterSystems::User_Person::setcity(class InterSystems::d_string const &)" (?setcity@User_Person@InterSystems@@UAEXABVd_string@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class InterSystems::d_string __thiscall InterSystems::User_Person::getcity(void)const " (?getcity@User_Person@InterSystems@@UBE?AVd_string@2@XZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall InterSystems::User_Person::setdob(class InterSystems::d_date const &)" (?setdob@User_Person@InterSystems@@UAEXABVd_date@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class InterSystems::d_date __thiscall InterSystems::User_Person::getdob(void)const " (?getdob@User_Person@InterSystems@@UBE?AVd_date@2@XZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall InterSystems::User_Person::setname(class InterSystems::d_string const &)" (?setname@User_Person@InterSystems@@UAEXABVd_string@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class InterSystems::d_string __thiscall InterSystems::User_Person::getname(void)const " (?getname@User_Person@InterSystems@@UBE?AVd_string@2@XZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall InterSystems::User_Person::setsalary(class InterSystems::d_double const &)" (?setsalary@User_Person@InterSystems@@UAEXABVd_double@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class InterSystems::d_double __thiscall InterSystems::User_Person::getsalary(void)const " (?getsalary@User_Person@InterSystems@@UBE?AVd_double@2@XZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall InterSystems::User_Person::setscore(class InterSystems::d_int const &)" (?setscore@User_Person@InterSystems@@UAEXABVd_int@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class InterSystems::d_int __thiscall InterSystems::User_Person::getscore(void)const " (?getscore@User_Person@InterSystems@@UBE?AVd_int@2@XZ)"
1>C:\Users\Denis Goncharov\documents\visual studio 2010\Projects\xcache1\Debug\xcache1.exe : fatal error LNK1120: 10 неразрешенных внешних элементов
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:03.01


А стоит закоментировать объект все ок.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <iostream>
#include <Windows.h>

#include "cppbind.h"
#include "database.h"

#include "User_Person.h"

#pragma comment(lib,"cppbind_msvc10_0d.lib")

int main(void)
{
	setlocale(LC_ALL,"Russian");
	Db_err conn_err;
	d_connection conn = tcp_conn::connect("localhost[1972]:Samples","_SYSTEM", "SYS",  0 , &conn_err);
   
	if (conn_err) {
		std::cerr << conn_err << '\n';
		return - 1 ;
	}
    Database db(conn);
	
	std::cout<<"Установлено соединение"<<std::endl;
	std::cout<<"Версия сервера :"<<db.get_library_version()<<std::endl;
	
	typedef d_ref <User_Person> db_Person;
	//db_Person p;

	return  0 ;
}
Результат выполнения:
автор
Код: plaintext
1.
2.
Установлено соединение
Версия сервера :2011.1.1.600.0
Для продолжения нажмите любую клавишу . . .


Подскажите пожалуйста, какой либы не хватает при линковки, что именно из *.dll - cache у меня не собралось (если можно прикрепите библиотеку и ее либу в топ).

Или может я просто совсем не в том направлении копаю. Заранее Вам спасибо.
...
Рейтинг: 0 / 0
Проблема со связкой C++ & Cache (Caché C++ Binding)
    #37500075
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkKnight ,

Для компиляции конфигураций winit/winamd64 нужно поменять платформу с Win32 на x64 и соответственно поменять флаги препроцессора с WIN32 на WIN64.
Отправил Вам на почту тестовый проект работы с объектами для обеих платформ (x32/x64). Во всех случаях программа работает отлично (проверял на версии 2011.2.FT3_x64).

PS: предполагается, что Вы настроили переменные окружения CACHEBIN , CACHESYS и CACHECPPLIB : Configuring Microsoft Visual Studio 2008
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Проблема со связкой C++ & Cache (Caché C++ Binding)
    #39591455
VenumGodzilla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkKnight,Здравствуйте, можно вас попросить чуть-чуть помочь мне в вопросе связанным со связыванием VS 2015 и cache 2016.1 Я бы был очень признателен вам. Все вроде делаю по инструкции выдает

Ошибка C2440 инициализация: невозможно преобразовать "const InterSystems::Registered_t *" в "const InterSystems::Persistent_t *c:\intersystems\cache\dev\cpp\include\obj_types.h 639

это выдает и на vs 2008(((
...
Рейтинг: 0 / 0
Проблема со связкой C++ & Cache (Caché C++ Binding)
    #39591471
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VenumGodzilla,

А можете какой нибудь ваш пример привести?
...
Рейтинг: 0 / 0
Проблема со связкой C++ & Cache (Caché C++ Binding)
    #39591704
VenumGodzilla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,
В папке <cachesys> (папка в которой установлена cache) лежат файлы для взаимодействия с cache на разных платформах и яву(Java, Python, c++, c#)я хочу написать клиентское приложение на c++ VS 2015(на 2008 тоже самое), мне предоставлены библиотеки для 32/64 бит(cppbind_msvc120.lib, cppbind_msvc120d.lib, cppbind_msvc120d64.lib, cppbind_msvc120r64.lib)

Делаю все по инструкции: имя переменной| значение переменной
Захожу в Переменные среды->Создаю переменные: CACHEBIN| <Cachesys> \ Bin
CACHECPPLIB| <Cachesys> \ DEV \ CPP \ Lib

Добаил к системной переменной PATH следующее:
;% CACHEBIN%;% CACHECPPLIB%

Дальше делаю все тоже по инструкции
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GBCP_intro#GBCP_intro_library
несколько раз перепроверял

Суть программы имеются разные значения в полях для которых я предварительно создал через генератор *.h && *.cpp файлы
любой пример программы даже указанные выше пробовал
Очень был бы признателен решившим помочь
P.S. прошу не судить строго имею небольшой опыт в программировании
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема со связкой C++ & Cache (Caché C++ Binding)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]