Chciałbym zaimportować funkcję napisaną w C# do programu w lazarusie, wybrałem pattern wrappera w C++/CLI.
C#:
namespace TestLib
{
public static class Functions
{
public static int Test(int x)
{
return x;
}
}
}
C++/CLI:
TestLibWrapper.h:
#pragma once
#using "TestLib.dll"
using namespace System;
__declspec(dllexport) int Test(int x);
TestLibWrapper.cpp:
#include "stdafx.h"
#include "TestLibWrapper.h"
int Test(int x)
{
return TestLib::Functions::Test(x);
}
Lazarus:
function Test(x: Integer) : Integer; stdcall; external 'TestLibWrapper.dll';
Wszystkie programy się budują: problem występuje natychmiast po włączeniu aplikacji w lazarusie z komunikatem błedu "Nie znaleziono punktu wejścia procedury Test w bibliotece (...)\test1.exe."
W katalogu z kodem pascala wrzuciłem na wszelki wypadek obydwie DLLe: TestLib i TestLibWrapper.
Słyszałem że delphi jest tylko 32-bitowe, ale kompilacja w x86 powodowała błąd "Nieprawidłowe uruchomienie pliku wykonwywalnego", po zmianie na target bibliotek na x64 otrzymałem opisany wyżej rezultat, widocznie w lazarusie działa to inaczej.
Zna ktoś rozwiązanie tego problemu?