Tasking Compiler/Linker

Gast #2338744
Lesenswert?

Hallo,

verwende für einen 16bit Controller von Infineon den Tasking Compiler 
und Linker. Folgende Linkerfehlermeldung verstehe ich nicht:
>>E 222: module Init.obj (INIT_IC): symbol '__main': unresolved

C++ Datei - Init.cpp:
1
int main(void);
2

3
extern "C"
4
{
5
  #include "CAN.h"
6
}
7

8

9
int main(void)
10
{
11
  while(1)
12
  {
13
    NOP();
14
  }
15
}

Ich habe doch bereits alles richtig deklariert. Weiß vielleicht jemand 
wie ich dieses Problem beheben kann ?
Gast #2338798
Lesenswert?

Leo schrieb:
> extern "C"
>
> {
>
>   #include "CAN.h"
>
> }

Was soll das hier bezwecken?

Entweder binde ich eine Headerdatei ein oder ich lasse es. Ich würde 
extern "C" und die geschweiften Klammer weglassen.


Funktionen mit Rückgabewert sollten ein return enthalten. Auch dann, 
wenn sie dort nie hier gelangen.
Gast #2338999
Lesenswert?

ändere mal den Namen von main auf main2.

Wenn die Fehlermeldung immer noch __main heißt, dann wird Deine Datei 
warum auch immer ignoriert.

Ich glaube, jetzt weiß ich weiß Dein Problem ist. Laß doch mal die 
Prototypenzeile weg. Denn die Main-Funktion braucht keinen Prototypen.

Würde mich nicht wundern, wenn es dann funktioniet.
Gast #2339089
Lesenswert?

Hallo, danke erstmal für eure Unterstützung.
Ich habe alles mögliche versucht.

Version 1:
1
void main(void)
2
{
3
  _nop();
4
}

Compilerwarnung:
> W  91: no prototype for function "_main"
Linkerfehlermeldung:
>E 222: module Init.obj (INIT_IC): symbol '__main': unresolved

Version 2:
1
void main2(void)
2
{
3
  _nop();
4
}

Keine Compilerwarnung in Init.cpp
Fehlermeldung in der start.asm Datei:
>E 222: module start.lno (start): symbol '_main': unresolved
Gast #2339926
Lesenswert?

cskulkw schrieb:
>> extern "C"
>>
>> {
>>
>>   #include "CAN.h"
>>
>> }
>
> Was soll das hier bezwecken?

Wie Leo in seinem Eingangs Post schrieb, schreibt er sein Programm in 
C++. Die Header Datei liegt anscheinend als gewöhnlicher ANSI-C Code 
vor. Daher wird der Compiler mit extern "C" angewiesen, den Inhlalt von 
CAN.h als C-Code anstatt C++ zu interpretieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren