PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++/CLI ClassLib


Gast
2006-10-06, 13:05:10
Ich hab folgendes Problem:
Wenn ich in einer ClassLibrary eine Klasse ordentlich in Header/ und Sourcefile implementiere, kriege ich beim Verlinken ein "unresolved token" auf alles was im SourceFile implementiert ist. Wenns alles im Headerfile implementiert wird, laeufts problemlos durch. Allerdings ist das ja keine wirkliche Loesung. :(

Schonmal danke fuer alle Antworten.

Matrix316
2006-10-06, 13:10:58
Hm, ist das Sourcefile dem Projekt bekannt? Ist das Headerfile dem Sourcefile bekannt? ;)

AnPapaSeiBua
2006-10-06, 13:14:17
Poste doch mal die Dateien.

Gast
2006-10-06, 13:26:20
Hm, ist das Sourcefile dem Projekt bekannt? Ist das Headerfile dem Sourcefile bekannt? ;)
Die Frage meinst du doch nicht ernst?


Hab mal kurz ein Testprojekt aufgesetzt:

// testlib.h

#pragma once

namespace testlib {

public ref class Class1
{
public:
void bla();
};
}

// testlib.cpp

#include "stdafx.h"

#include "testlib.h"

void testlib::Class1::bla()
{}


// lnk2020.cpp : main project file.

#include "stdafx.h"
#include "../testlib/testlib.h"

using namespace System;

int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
testlib::Class1^ testObject = gcnew testlib::Class1();
testObject->bla();
return 0;
}


2>Linking...
2>lnk2020.obj : error LNK2020: unresolved token (06000001) testlib.Class1::bla

Project Dependencies sind natuerlich gesetzt.

AnPapaSeiBua
2006-10-06, 14:00:05
Bist Du sicher, dass die testlib.cpp compiliert und dazugelinkt wird?

Gast
2006-10-06, 14:27:30
Bist Du sicher, dass die testlib.cpp compiliert und dazugelinkt wird?
Mal vorneweg: Es ist kein C++ Problem sondern nur von CLI.

Sie wird compiliert, die .obj und .lib Datei erzeugt, liegen im richtigen Verzeichnis und sollten durch dir Proj Dependencies auch mitgelinkt werden (Commandozeile sieht auch mal richtig aus).
Da ich nicht mehr in der Firma bin, werd ich nachher mal das Testprojekt neu aufsetzen, damit ich Screenshots von den Einstellungen posten kann, wenn da jemand genauere Fragen hat.
Vielleicht landet der Metacode aus irgendwelchen Gründen nicht in der Lib oä.. Mir ists auf jeden Fall rätselhaft. :(

AnPapaSeiBua
2006-10-06, 14:57:19
Geht's hiermit?


// testlib.h

#pragma once

namespace testlib {

public ref class Class1
{
public:
virtual void bla();
};
}

Matrix316
2006-10-06, 16:12:24
Die Frage meinst du doch nicht ernst?



Man weiß ja nie. Die Fehlermeldung mit unresolved Token bekomm ich wenn ich in ein Visual C++ Projekt eine Klasse nutzen will, welche zwar korrekt implementiert ist (mit Include), welche aber nicht dem Projekt zugehörig ist. Hört sich komisch an, ist aber so. :rolleyes: