Converting DLL to Gambas Libary

Post your Gambas programming questions here.
Post Reply
AndyGable
Posts: 359
Joined: Wednesday 2nd December 2020 12:11am
Location: Northampton, England
Contact:

Converting DLL to Gambas Libary

Post by AndyGable »

Hi Everyone,

I hope someone could advice me on this issue.

I have a DLL that has been custom wrote for me to provide promotional support to my Point of sale system (I paid for this to be created)

I have spoken to the company that did this DLL and they can not and will not convert it for use with Gambas. (as they use FreeBASIC in Linux)

Is is possible to convert a DLL to become a Library File for Gambas? ( I am happy to pay a small amount for someone to do this if it is possible)
User avatar
BruceSteers
Posts: 1521
Joined: Thursday 23rd July 2020 5:20pm
Location: Isle of Wight
Contact:

Re: Converting DLL to Gambas Libary

Post by BruceSteers »

You should just be able to load the dll into gambas.
http://gambaswiki.org/wiki/howto/extern

Not my area of expertise I'm afraid, Steve and Voutt are masters of this kind of thing.
As long as you have the function names/parameters details it "should" be not too complicated.
If at first you don't succeed , try doing something differently.
BruceS
User avatar
BruceSteers
Posts: 1521
Joined: Thursday 23rd July 2020 5:20pm
Location: Isle of Wight
Contact:

Re: Converting DLL to Gambas Libary

Post by BruceSteers »

Can you get the source code?

If you have paid for it i'd ask for the source.
you may be able to re-write/convert it by hand

or if the dll is not useable then get the FreeBasic version of the library
If at first you don't succeed , try doing something differently.
BruceS
vuott
Posts: 262
Joined: Wednesday 5th April 2017 6:07pm
Location: European Union

Re: Converting DLL to Gambas Libary

Post by vuott »

If you have and want to use an external library, it means that you intend to use the functions and other resources contained in that library.
Generally in Gambas external functions of a shared library (.so), no DLL, can be called.
Such external libraries must be written in C language. In Gambas it is also possible to use external ".so" libraries, written in C ++, but their use is much more complex.

A conversion from the DLL library source can have two answers in my opinion:
- patiently :? convert each resource (and therefore the code contained in any external functions) of the DLL library into Gambas language (...this is not always possible);
- convert the library from "Dynamic Library " DLL into "Shared Library " .SO, so that then the external functions are called with the keyword "Extern " in your Gambas program.

Anyway, could you show us the source code of your dynamic library .DLL ?
Last edited by vuott on Monday 17th May 2021 6:56pm, edited 1 time in total.
Europaeus sum !

Amare memorentes atque deflentes ad mortem silenter labimur.
AndyGable
Posts: 359
Joined: Wednesday 2nd December 2020 12:11am
Location: Northampton, England
Contact:

Re: Converting DLL to Gambas Libary

Post by AndyGable »

BruceSteers wrote: Monday 17th May 2021 4:53pm Can you get the source code?

If you have paid for it i'd ask for the source.
you may be able to re-write/convert it by hand

or if the dll is not useable then get the FreeBasic version of the library
I have the source code it was written in Visual studios 2019
AndyGable
Posts: 359
Joined: Wednesday 2nd December 2020 12:11am
Location: Northampton, England
Contact:

Re: Converting DLL to Gambas Libary

Post by AndyGable »

vuott wrote: Monday 17th May 2021 6:34pm If you have and want to use an external library, it means that you intend to use the functions and other resources contained in that library.
Generally in Gambas external functions of a shared library (.so), no DLL, can be called.
Such external libraries must be written in C language. In Gambas it is also possible to use external ".so" libraries, written in C ++, but their use is much more complex.

A conversion from the DLL library source can have two answers in my opinion:
- patiently :? convert each resource (and therefore the code contained in any external functions) of the DLL library into Gambas language (...this is not always possible);
- convert the library from "Dynamic Library " DLL into "Shared Library " .SO, so that then the external functions are called with the keyword "Extern " in your Gambas program.

Anyway, could you show us the source code of your dynamic library .DLL ?
I can show you a snipe as for some reason the compnay did the DLL in seperate functions

Code: Select all

Imports System.Xml

Public Class _
  AnyOfDiscountProduct

  Inherits DiscountProduct

  Public Overrides Function _
    Accepts(
      anItem As MultisaverDiscountItem) _
    As Boolean

    Return (
      _barCodes.Contains(anItem.Item.Product.BarCode) AndAlso
      Not Filtered(anItem))
  End Function

  Public Overrides Function _
    FromXml(
      aNode As XmlNode,
      aSupportedFilters As FilterFactory) _
    As DiscountProduct

    MyBase.FromXml(aNode, aSupportedFilters)

    For _
      Each child As XmlNode _
      In aNode.ChildNodes

      If (child.Name.ToLower() = "barcode") Then
        _barCodes.Add(child.InnerText.Trim())
      End If
    Next

    Return (Me)
  End Function

  Private _
    _barCodes As New List(Of String)
End Class
The DLL handles the promotions like

buy one get one free or any 6 get 10% off the total lot

The VB app would send to the module every item that is scanned and when the total key is pressed I would get a result of all offers that
was processed.

I have tired in the past to support the offers etc with in my app and code them myself but I could never get it to work and this DLL handles
them perfectly
vuott
Posts: 262
Joined: Wednesday 5th April 2017 6:07pm
Location: European Union

Re: Converting DLL to Gambas Libary

Post by vuott »

I do not know Visual studios 2019 language, but it seems to me a Basic dialect. Most likely it could be translated directly into Gambas.
It also seems to me that there are references to other functions or in any case to other resources external to that your posted code.
Europaeus sum !

Amare memorentes atque deflentes ad mortem silenter labimur.
vuott
Posts: 262
Joined: Wednesday 5th April 2017 6:07pm
Location: European Union

Re: Converting DLL to Gambas Libary

Post by vuott »

Sorry, have you ever thought about writing a Gambas code yourself, to solve that problem ?
Europaeus sum !

Amare memorentes atque deflentes ad mortem silenter labimur.
AndyGable
Posts: 359
Joined: Wednesday 2nd December 2020 12:11am
Location: Northampton, England
Contact:

Re: Converting DLL to Gambas Libary

Post by AndyGable »

vuott wrote: Monday 17th May 2021 7:02pm I do not know Visual studios 2019 language, but it seems to me a Basic dialect. Most likely it could be translated directly into Gambas.
It also seems to me that there are references to other functions or in any case to other resources external to that your posted code.
Yes the code I sent is a veriest of BASIC (Visual BASIC) As all of my EPoS systems are Done in Visual basic (visual studio 2008 for my part) I am very up on VB but I am still getting my head around Gambas

From what I can see the code is not using any Windows only API the only thing it is importing is a XML framework as that is the format the data comes from the back office system (as that was what the other company requested I output to them in)
vuott wrote: Monday 17th May 2021 7:06pm Sorry, have you ever thought about writing a Gambas code yourself, to solve that problem ?
I would love to write it myself but I never managed to get it to work in VB ever (that is why I had to pay another software company to create the DLL for me in the first place.)
vuott
Posts: 262
Joined: Wednesday 5th April 2017 6:07pm
Location: European Union

Re: Converting DLL to Gambas Libary

Post by vuott »

You could try writing in Gambas and ask for help in this forum in case of difficulty.
Otherwise someone who knows the Visual basic / Visual studio for conversion should step in to help you here.
Europaeus sum !

Amare memorentes atque deflentes ad mortem silenter labimur.
Post Reply