C# DLL in C++ code einbinden!



  • Servus Leute,

    ich habe eine C# dll geschrieben und die muss ich in einen C++ code einbinden:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Drawing;
    using System.Runtime.InteropServices;
    
    namespace test
    {
        [ClassInterface(ClassInterfaceType.AutoDual)]
        [ComVisible(true)]
    
        public class test
        {
            public void testGo(string strPfad, string strSave)
            {
                testBlock1(strPfad);
                testBlock2(strPfad);
                ShowResult(0, strSave);
            }
         }
    }
    

    Hier importiere ich die tlb:

    #import "test.tlb" raw_interfaces_only
    

    Hier will ich die Funktion aufrufen:

    test::_test *pptr;
    	CoInitialize(NULL);
    	test::_testPtr testPtr(__uuidof(test::test));
    	pptr = testPtr;
    	pptr->testGo();
    

    Doch es kommt der Fehler:

    error C2039: 'testGo' : Ist kein Element von '_test'
    : Siehe Deklaration von '_test'

    Sieht jm. den Fehler oder weiß jemand was ich falsche mache?

    Mfg



  • Hier ist C++/CLI - weder C++ noch C# - also das falsche Forum.
    Das C# Forum ist vermutlich am besten geeignet.

    Google mal nach CCW (COM Callable Wrapper).



  • Sorry theta,

    da bin ich dran schuld, da ich ihm den Hinweis auf dieses Forum gegeben habe.

    Mit reinem C++ kann er doch sowieso keine .NET-Assembly aufrufen, daher muß er doch C++/CLI verwenden, oder etwa nicht?

    Edit: ok, jetzt verstehe ich: das soll über COM gelöst werden...
    (das "#import" hatte mich verwirrt - ich dachte, das wäre dann C++/CLI - es ist aber eine generelle C++ Erweiterung vom MSVC!).



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C# und .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Administrator

    Ich kenne mich zwar auch nicht so gut mit COM aus, aber du solltest dir vielleicht mal das hier durchlesen:
    http://msdn.microsoft.com/en-us/library/xk1120c3.aspx

    Vor allem die Abteilung über Typkonvertierung. Wenn ich das richtig sehe, dann werden Methoden von Klassen nicht exportiert. Dazu musst du Interfaces verwenden.

    Grüssli


Anmelden zum Antworten