Использование внешних библиотек (linux) в коде

Автор calc4fem, 10 августа 2015, 08:24

0 Пользователи и 1 гость просматривают эту тему.

calc4fem

пробую использовать внешние библиотеки (в данном случае статическую)
http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

библиотеку создал, открыл Calc, задекларировал - https://help.libreoffice.org/3.3/Basic/Declare_Statement_Runtime
и что то не получается

Если у кого есть 64 битный линукс - то вот файлы прилагаю

calc4fem

В случае виндоус подключение к dll работает как то странно. Ошибки не пишет, но выдает 1+1=1
dll содержит функцию которая суммирует два числа, построено на виндус 64 bit

Hasim

#2
Никакой из ваших кодов не работает
Могу привести работающий пример (проверьте) из стандартной библиотеки Windows :
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal buffer As String, ByVal nSize As Long) As Long

Sub Test()
   Dim buffer As String
   Dim lens As Long
   buffer = String(256, 0)
   lens = GetWindowsDirectory(buffer, Len(buffer))
   buffer = Left(buffer, lens)
    MsgBox (buffer)
End Sub


как подключить собственную dll к VBA: http://www.cyberforum.ru/vba/thread818113.html

И прежде чем возиться с LibreOffice, нужно добиться работы dll в Microsoft Office.

calc4fem

Ваш пример работает.
Из dll для примера - работает вторая функция, которая не имеет аргументов
(возвращает ноль)
При этом она работает в двух случаях
1) dll скопирован в папку виндоус (без указания пути в коде)
2) к dll указан абсолютный путь
3) не работает, если dll просто лежит в одной папке (а например любой exe - в виндоус или линукс - находят библиотеки в той же папке, так что логика нарушена)

Таким образом пример в посте 2 не работает скорее всего из-за неверного указания аргументов в коде basic

Hasim

Цитата: calc4fem от 13 августа 2015, 17:23Из dll для примера - работает вторая функция, которая не имеет аргументов
(возвращает ноль)
Не работает она. То же самое выдает и это:

Declare Function Test1 Lib "c:\libdds.dll" Alias "SampleFunction2"

Function aaa(x As Integer,y As Integer) As Integer

aaa=TTTT()     ' <- любая ерунда выдает 0

FreeLibrary("c:\libdds.dll")

End Function

Hasim

#5
Пример написания Dll для Excel  с использованием MFC:
http://www.firststeps.ru/mfc/steps/r.php?46


Я не пробовал ввиду отсутствия данного компилятора.