Я получаю следующее сообщение об ошибке:
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 (как часть, которую я не добавил из-за строк кода, так и часть после чтения файла, работает, потому что до добавления части для чтения файла все работало отлично.
Единственный код, который у меня есть,
Эйер, ты не вставил этот код в main
функция (которую вы должны иметь), или ваш вызов компилятора / компоновщика неверен. Невозможно сказать, что, учитывая детали, которые вы предоставили.
Кроме того, ваш вопрос имеет неправильный заголовок: у вас нет проблем с чтением файла, у вас есть проблема соединение ваша программа (которая предназначена для чтения файла).
Ваша программа должен содержать один 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;
}