Witam!
Mam zamiar stworzyć bibliotekę dll w c++ i użyć jej w projekcie c#, używam Visual Studio Team Suite 2008
Próbowałem dwóch sposobów, lecz bez względu na metodę uzyskuję błąd:
Nie można załadować pliku lub zestawu 'DllTest1, Version=1.0.3823.35811, Culture=neutral, PublicKeyToken=null' lub jednej z jego zależności. Próbowano załadować program w niepoprawnym formacie.
Bibliotekę tworzę w projekcie C++\Class Library
W projekcie C# błędów podczas kompilacji nie ma, jedynie przy uruchamianiu funkcji, która wykonuje funkcję z biblioteki dll.
Przy błędzie podświetla się też pole Application.Run(new Form1());
Dodana referencja ma zaznaczone pole Copy Local i kopia dll'a jest obok execa.
Gdy tworzę sposobem mniej chcianym, czyli:
plik DllTest2.cpp ( z którego tworzę dll)
#include <stdio.h>
extern "C"
{
__declspec(dllexport) void DisplayHelloFromDLL()
{
printf ("Hello from DLL !\n");
}
}
plik Test2.cs
using System;
using System.Runtime.InteropServices;
namespace Test2
{
class Test
{
[DllImport("DllTest2.dll")]
public static extern void DisplayHelloFromDLL();
static void Main(string[] args)
{
Console.WriteLine("This is C# program.");
DisplayHelloFromDLL();
Console.ReadKey();
}
}
}
Wyśiwetla się następujący błąd:
Próbowano załadować program w niepoprawnym formacie. (Wyjątek od HRESULT: 0x8007000B)
Podświetla się przy tym funkcja DisplayHelloFromDLL();
najbardziej mi zależny na tej pierwszej metodzie, ponieważ nie chcę exportować żadnych symboli.
Proszę o pomoc, głowię się i trudzę, a nigdzie nic nie mogę znaleźć.