1. Yasir Masood
  2. PowerBuilder
  3. Monday, 9 January 2023 03:44 AM UTC

Hi,

I have a question about using a C# DLL in PB. We purchased a third-party DLL that was written in C with a VB 6 wrapper. I was able to use the VB 6 DLL without any issue. The declaration was as follows

SUBROUTINE calculate (double a, double b, long c, REF double d, REF long I) LIBRARY "vb32.dll" ALIAS FOR "calculate;Ansi"

Now our company have decided to use a C# wrapper instead of VB 6. When I declare the C# DLL, I get a syntax error.

private static extern void calculate (double a, double b, long c, ref double d, ref long l) LIBRARY "x32.dll" ALIAS FOR "calculate";

I am using PB 2017 R3 Build 1858.

I would appreciate any help.

Thank you

Yasir Masood Accepted Answer Pending Moderation
  1. Monday, 9 January 2023 17:59 PM UTC
  2. PowerBuilder
  3. # 1

What version of PB do I need for this to work?

Comment
  1. Roland Smith
  2. Monday, 9 January 2023 19:26 PM UTC
The original post says they purchased a C dll that came with a VB6 wrapper. They can call into a C dll directly using an external function declaration. Using C# is a totally unnecessary complication.
  1. Helpful
  1. Chris Pollach @Appeon
  2. Monday, 9 January 2023 19:43 PM UTC
Hi Roland;

The original post title was "Calling C# DLL". ;-)

Regards... Chris
  1. Helpful
  1. Roland Smith
  2. Monday, 9 January 2023 20:11 PM UTC
He wants to try C# because he couldn't get it to work by calling the VB6 wrapper. If the DLL is regular C, he doesn't need C# or VB6.
  1. Helpful 1
There are no comments made yet.
Yasir Masood Accepted Answer Pending Moderation
  1. Monday, 9 January 2023 17:58 PM UTC
  2. PowerBuilder
  3. # 2

Thank you Chris. I will try this

Comment
There are no comments made yet.
Roland Smith Accepted Answer Pending Moderation
  1. Monday, 9 January 2023 15:04 PM UTC
  2. PowerBuilder
  3. # 3

You can call a regular C DLL function directly from PB without a wrapper.

"static extern void" are regular C terminology, the rest is a valid PB external function declaration.

Comment
  1. Yasir Masood
  2. Tuesday, 10 January 2023 04:03 AM UTC
The original code was written in C but there was no C DLL. We only got it with a VB DLL.



I understand that we can create C DLL now but since we will be porting the app to .NET, they want to use a C# DLL
  1. Helpful 1
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Monday, 9 January 2023 12:33 PM UTC
  2. PowerBuilder
  3. # 4

Hi Yasir;

  For interacting directly with  C# .Net assemblies in newer Appeon PB versions, you can now use the "DotNetObject" object class. However, you have to use the C# "importer" tool, as follows:

https://docs.appeon.com/pb2022/application_techniques/Importing_CSharp_assembly.html

HTH

Regards ... Chris 

Comment
There are no comments made yet.
René Ullrich Accepted Answer Pending Moderation
  1. Monday, 9 January 2023 08:21 AM UTC
  2. PowerBuilder
  3. # 5

private static extern void calculate (double a, double b, long c, ref double d, ref long l) LIBRARY "x32.dll" ALIAS FOR "calculate";

This does not look like PB code nor C# code?

Comment
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.
We use cookies which are necessary for the proper functioning of our websites. We also use cookies to analyze our traffic, improve your experience and provide social media features. If you continue to use this site, you consent to our use of cookies.