Внешняя компонента Native Api на C++ под Linux (Ubuntu x64) на 1С 8.3 #749920


#0 by alexeyomg
Пишу ВК, не могу подключить к 1с на ubuntu. Даже экзапл от 1с не подключается. Поэтому вопрос по нему: 1)    Пытаюсь подключи ВК из примера VNCOMPS, приведённым в статье (ссылку можно найти в самом конце: «Копирование»). Внутри в проекте NativeApi есть makefile. С его помощью я собираю .so библиотеку на Ununtu. Но при "ПодключитьВнешнююКомпоненту" 1с вылетает. Аналогично, если собираю при помощи "build.sh" (в корне проекта). В самом makefile меняю флаг с m32 на m64, т.к. 1с и сама система x64. (с параметром m32 не подцепляется всё равно) Вот пример вызова ВК из 1С 8.3: Есть статейка как раз на эту тему . Но, насколько я вижу, все эти моменты уж учтены исправили в VNCOMPS примере. Но по сути дело в параметрах компиляции. Мб 32битная внешняя компонента подцепляется к 32-x битной 1с нормально, но я развернул на Ubuntu x64 1c enterprise83 8.3.5-1486 amd64. И хочу к ней подцепить ВК. Есть у кого мысли, как решить этот вопрос?) VNCOMPS-пример должен работать, но походу надо поправить параметры сборки, или сама платформа, на которой я тестирую - некорректна.
#1 by orefkov
Раз 1С вылетает - значит, всё-таки подгружает твою ВК. Ищи, где в твоем коде вылет. Самое простое - в своей ВК пиши в какойнить файл трассировку выполнения.
#2 by alexeyomg
я пишу логи в каждом методе. в лог файле - пусто.
#3 by orefkov
ldd AddInNative.so что показывает?
#4 by alexeyomg
#5 by trdm
отладчик есть? Пустить через него. Помнится отладка 1С++ очень хорошо выручала
#6 by xaozai
+ Не знаю, как у вас с линуксами, а когда компоненту на С++ под Win писал, то мне оч. помогала возможность отладчика MS Visual Studio приаттачить процесс 1cv8.exe "Attach to Process". Бряк, при этом, в самой компоненте ставится, при инициализации, например.
#7 by bolero
run bt
#8 by alexeyomg
[New Thread 0x7fff4920a700 (LWP 8284)] [Thread 0x7fff4920a700 (LWP 8284) exited] *** Error in `/opt/1C/v8.3/x86_64/1cv8c': free: invalid next size (fast): 0x0000000003327780 *** это выводит при подключении ВК
#9 by alexeyomg
ну на винде цепляется эти компонента (которую я сбилтил через VS). для ubuntu я изменяю следующее, чтобы норм сбилдить .so: 1) build.sh имеют следующие команды: #!/bin/sh PATH=~/cmake-2.8/bin:$PATH mkdir build64_310 ; cd build64_310 ; cmake -D XUL_VERSION:STRING="31.0" -D CMAKE_BUILD_TYPE:STRING=RelWithDebInfo -D TARGET_PLATFORM_32:BOOL=OFF --build .. ;     cd .. cd build64_310 ;  make -j 4 ; cd ..; rm -rf build64_310 вместо полного: #!/bin/sh #build script for CentOS 5 PATH=~/cmake-2.8/bin:$PATH echo "Build 32 310" ; if [ ! -d build32_310 ]; then     mkdir build32_310 ; cd build32_310 ;     scl enable devtoolset-2 'cmake -D XUL_VERSION:STRING="31.0" -D TARGET_PLATFORM_32:BOOL=ON -D CMAKE_SHARED_LINKER_FLAGS:STRING=-m32 -D CMAKE_MODULE_LINKER_FLAGS:STRING=-m32 -D CMAKE_EXE_LINKER_FLAGS:STRING=-m32 -D CMAKE_BUILD_TYPE:STRING=RelWithDebInfo --build .. '; fi ; cd build32_310 ;  scl enable devtoolset-2 'make -j 4' ; cd .. ; rm -rf build32_310 echo "Build 64 310" ; if [ ! -d build64_310 ]; then     mkdir build64_310 ; cd build64_310 ;     scl enable devtoolset-2 'cmake -D XUL_VERSION:STRING="31.0" -D CMAKE_BUILD_TYPE:STRING=RelWithDebInfo -D TARGET_PLATFORM_32:BOOL=OFF --build .. '; fi ; cd build64_310 ;  scl enable devtoolset-2 'make -j 4' ; cd ..; rm -rf build64_310 2) в CMakeLists.txt убрал несколько строк, чтобы собиралось только NAtiveAPI. Убрал следующее: IF("${XUL_VERSION}" STREQUAL "")     MESSAGE(FATAL_ERROR "XUL_VERSION must have value!") P.S. Мб я что-то лишнее убрал?) но мб всё по делу. всё собирается норм, но не подключается к 1с. Пытаюсь подцепить компонентц эту x32, выдаётся "Ложь", а не вылетает. Ну это так, как доп инфа.
#10 by alexeyomg
всё. получилось подключить более менее шаблон этот. я хз что изменилось, но раньше метод GetClassNames не вызывался. логов не было... вылетало в самом первом методе, который вызывается 1с-кой "GetClassNames". В итоге в логах всё норм пишет, что вызывается GetClassNames GetClassObject CAddInNative Init Но установить такие же параметры в моём проекте, что и в тестовом проекте у меня так и не получается. Мне нужно в одном cmakelists прописать все правила, что описаны в cmakelists(корень примера этого) и makefile (NativeApi проект) тестового примера. Посмотрите плз. Что коряво написано: Это мой Cmakelists cmake_minimum_required(VERSION 3.2) SET(ProjectName "A1CFclientClionNativeApi") SET(SOURCE_FILES     AddInNative.cpp dllmain.cpp    AddInNative.h ComponentBase.h IMemoryManager.h    types.h    com.h stdafx.h    stdafx.cpp    AddInDefBase.h)
#11 by alexeyomg
А это makefile проекта NativeApi из примера: TARGET=AddInNative.so LIBS=pthread OBJECTS=$(SOURCES:.cpp=.o) INCLUDES=-I../../include И cmakelists решения всего: # Cmake script for project AddIn set(BUILD_DIR "build") set(CMAKE_SKIP_RPATH ON CACHE TYPE BOOL) OPTION(TARGET_PLATFORM_32 "Build target for i386" OFF) MARK_AS_ADVANCED(TARGET_PLATFORM_32)     MESSAGE(FATAL_ERROR "XUL_VERSION must have value!")
#12 by alexeyomg
Тема закрыта. с типами данных запара была. а ну да. в этом примере от 1С в методе GetClassNames идёт return s_names;, а надо взять код этой функции из шаблона (рядом с примерами лежит): но это одна из мелочей. у меня до этого вообще даже в начало этой функции на заходило (по логами видно было). более менее качественно ещё раз прописал параметры сборки и всё зафурычило. Кому нужно, вот так получился cmakelists: set(SOURCE_FILES     AddInNative.cpp    dllmain.cpp    AddInNative.h    ComponentBase.h    IMemoryManager.h     types.h    com.h    stdafx.h    stdafx.cpp    AddInDefBase.h) set_source_files_properties(${SOURCE_FILES} set_target_properties( ${ProjectName} PROPERTIES  CLEAN_DIRECT_OUTPUT 1  OUTPUT_NAME ${ProjectName} ) target_link_libraries (${ProjectName} "${REQUIRED_LIBRARIES}")
#13 by H A D G E H O G s
Никому не нужно. Пусть горит в огне адовом этот ubuntu.
#14 by Гёдза
Интересно, а на яве можно внешнюю компоненту написать?
#15 by alexeyomg
походу нет. вот выдержка из статьи по технологиям ВК: "В качестве средств разработки можно применять: Microsoft Visual C++, Delphi, C++ Builder, gcc"
#16 by Garykom
хм, может сначала "окна" 10-ку поставите? а потом уже будем ругать линукс
#17 by qwerty2469
В принципе на java можно написать, только не совсем ВК получиться.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С