Importowanie Bibliotek DLL

0

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źć.

0

Na logikę, to jezeli chcesz wyswietlic wiadomość w konsoli to pasowałoby przerobić aby DisplayHello zwracało string
potem w c# -> Console.Write(DispHello());

0

Nie w tym problem, lecz myślę że już go rozwiązałem, było to zapewne marne ustawienie, aby Kompilacja odbywała po przez CPU x86. Pozmieniałem kilka ustawień i Hello from dll! zostało wyświetlone. Ale dzięki, za pomoc.

0

Tu jest chyba w miarę dobra instrukcja: http://4programmers.net/Forum/560694#id560694 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1