Почему компоновщик не может найти main ()?

Я получаю следующее сообщение об ошибке:

usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In
function `_start':  (.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status

Единственный код, который у меня есть:

FILE *f = fopen("data/file.dat", "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);

char *bytes = malloc(pos);
fread(bytes, pos, 1, f);
fclose(f);

Теперь, я пришел из Java-фона, но я гуглил, он говорит, что я мог пропустить ссылку, но я не знаю, что это может быть, я даже добавил #include <stdio.h> и я прочитал кое-что о добавлении extern но я понятия не имею, где, поскольку у меня нет других файлов, если мне не нужно обратиться к файлу .dat?

РЕДАКТИРОВАТЬ Я также пытался в точке, чтобы привести массив байтов (char*)malloc(pos); но это тоже не помогло.

РЕДАКТИРОВАТЬ 2
весь код использует инфраструктуру NS-3, но все прекрасно скомпилировано, пока я не добавил эти строки. Это выглядит примерно так:

#include "ns3/core-module.h"#include "ns3/point-to-point-module.h"#include "ns3/network-module.h"#include "ns3/applications-module.h"#include "ns3/wifi-module.h"#include "ns3/mobility-module.h"#include "ns3/csma-module.h"#include "ns3/internet-module.h"
using namespace ns3;

NS_LOG_COMPONENT_DEFINE ("ThirdScriptExample");

int
main (int argc, char *argv[])
{
.....
//STARTS FILE READING
FILE *f = fopen("data/Terse_Jurassic_10_14_18.dat", "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);

char *bytes = (char*)malloc(pos);
fread(bytes, pos, 1, f);
fclose(f);

Simulator::Stop (Seconds (10.0));

pointToPoint.EnablePcapAll ("third");
phy.EnablePcap ("third", apDevices.Get (0));
csma.EnablePcap ("third", csmaDevices.Get (0), true);

Simulator::Run ();
Simulator::Destroy ();
return 0;
}

Сообщение об ошибке компилятора:

[1888/1930] cxxprogram:  -> build/scratch/data/data
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In
function `_start': (.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status Build failed  -> task in 'data'
failed (exit status 1):   {task 43470800: cxxprogram  -> data}

Я очень уверен, что код NS-3 (как часть, которую я не добавил из-за строк кода, так и часть после чтения файла, работает, потому что до добавления части для чтения файла все работало отлично.

0

Решение

Единственный код, который у меня есть,

Эйер, ты не вставил этот код в main функция (которую вы должны иметь), или ваш вызов компилятора / компоновщика неверен. Невозможно сказать, что, учитывая детали, которые вы предоставили.

Кроме того, ваш вопрос имеет неправильный заголовок: у вас нет проблем с чтением файла, у вас есть проблема соединение ваша программа (которая предназначена для чтения файла).

0

Другие решения

Ваша программа должен содержать один main() функция.

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *f = fopen("data/file.dat", "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);

char *bytes = malloc(pos);
fread(bytes, pos, 1, f);
fclose(f);
free(bytes);
return 0;
}
0

По вопросам рекламы [email protected]