次のエラー メッセージが表示されます。
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);
#include <stdio.h>
さて、私は Java のバックグラウンドを持っていますが、グーグルで調べてみました。参照が欠落している可能性があると書かれていますが、それが何であるかはわかりませextern
ん。 .dat ファイルを参照する必要がない限り、他にファイルがないのでどこにあるのでしょうか?
編集私もバイト配列をキャストしようとしました(char*)malloc(pos);
が、どちらも役に立ちませんでした。
EDIT 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 コード (コード行のために追加しなかった部分と、ファイルを読み取る部分を追加する前にすべてが完全に機能したため、ファイルを読み取った後の部分の両方が機能することを確信しています。