[Embarcado C++ Builder] Fehler beim Linken

12/29/2011 17:02 HardCore.1337#1
Hallo,
ich weiß, das nicht viele die IDE nutzen, dennoch versuch ich mal mein Glück hier.

Problem ist, das ich keinen von mir geschrieben Header einbinden kann.
Die IDE begründet das mit folgenden Fehler:

Quote:
[ILINK32 Fehler] Error: Nicht auflösbares externes '_Test' referenziert von C:\USERS\...\TEST\WIN32\DEBUG\FILE1.OBJ
Mein Quellcode ist übersichtlich und sollte eigentlich keine Fehler enthalten. Das Problem wird eine Compileroption sein, die ich allerdings nicht kenne

File1.c
Code:
#pragma hdrstop
#pragma argsused

#include <stdio.h>
#include <tchar.h>
#include "Unit1.h"



int _tmain(int argc, _TCHAR* argv[])
{
    printf("%d\n", Test(50, 10));

	system("pause");
	return 0;
}

Unit1.cpp
Code:
//---------------------------------------------------------------------------

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)

int Test(int a, int b)
{
	return a + b;
}


Unit1.h
Code:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H

int Test(int a, int b);
//---------------------------------------------------------------------------
#endif
Laut google stimmt irgendwas mit dem Linker nicht.

Danke :)
12/29/2011 17:58 xNopex#2
Moin,

Was mir aufgefallen ist:
Quote:
File1.c -- Unit1.cpp
Tippfehler oder Absicht?

Und:
Code:
#pragma package(smart_init)
Absichtlich gesetzt?
12/29/2011 18:01 HardCore.1337#3
1) Tippfehler. Wird gleich berichtigt

2) Wurde von der IDE vorgegeben. Bringt aber auch nichts wenn ich es lösche
12/29/2011 21:16 ms​#4
Eigentlich sollten beide Dateien kompiliert und an den Linker übergeben werden. Mit dem Header hat das nichts zu tun. Der Header sagt hier nur aus, dass diese Funktion überhaupt existiert.

Das Problem ist, dass deine Unit1.cpp offenbar nicht an den Linker übergeben wird oder gar nicht erst kompiliert wird.
12/29/2011 22:47 MrSm!th#5
^this

Kann es sein, dass du manuell Dateien zur Kommandozeile des Linkers hinzufügene musst bzw. die Datei nicht übernommen wird?
Hast du mal probiert, das Projekt neu zu erstellen?

Das sieht, wie MS schon sagte, sehr danach aus, dass das Objektfile von Unit1 nicht an den Linker übergeben wird bzw. nicht das Symbol Test exportiert und es deshalb im main Objektfile nicht genutzt werden kann.
12/30/2011 11:12 HardCore.1337#6
Ok, ich habe nun beide Dateien manuell erstellt (keine neue Unit) und diese manuell erzeugt. Jetzt klappts