9 years, 7 months ago.

エラーの意味が分かりません。

こんにちは。Mbed初心者です。 UDPプログラムを作っていますが、以下のようなエラーが出ます。 対応方法についてご教授お願いします。 Error: Undefined symbol mbed::Base::Base() (referred from fwk-if-eth-EthernetNetIf.cpp.o). Error: Undefined symbol mbed::Timer::Timer(const char*) (referred from fwk-if-eth-EthernetNetIf.cpp.o).

include "mbed.h"

  1. include "EthernetNetIf.h"
  2. include "UDPSocket.h"

EthernetNetIf eth; UDPSocket sock;

int main () { Host server(IpAddr(192,168,11,5), 8000);

if (eth.setup()) { return -1; }

sock.sendto("ABCD", 5, &server); 送信

while (1) { Net::poll(); } }

1 Answer

9 years, 7 months ago.

御世話様です。

厳しいようですが、以下点を確認願います。

  • まず、どのようなプログラムを実装されたいのでしょうか?短すぎるサンプルなので真意が測れませんでした。
    • 例:UDPのクライアント?サーバ?
  • mbedの他のプログラムは動作させたことはおありでしょうか?また、以下あたりの情報はよく読まれましたでしょうか?このあたりの基本的なサンプルを「動かす」ことを試されましたか?
  • その上でエラーコードを拝見するとエラーコード通りだと思いますが、Timerクラス等が見つからないというエラーであることは理解されていますか?これはmbedのライブラリがプロジェクトに含まれていない為に発生しているエラーです。
  • (UDPサーバと仮定)あとはmbedのサンプルを漁れば、すぐに以下のような(まずはエラーの出ない)コードにたどり着けると思うのですが・・クライアントもすぐに見つかるはずです。

質問を連投されておりますが、まずは御自身で調べる努力をなさるべきかと思います。もしこの程度の情報すら見つけられないようですと、この先プログラムを続けるのは困難かと思われます。耳が痛い話かと思われますが、御検討下さいませ。

udp_server

#include <mbed.h>
#include "rtos.h"
#include "EthernetInterface.h"
#include "UDPSocket.h"

#define ECHO_SERVER_PORT   7

DigitalOut myled(LED1);
EthernetInterface eth;

int main()
{
    EthernetInterface eth;
    eth.init(); //Use DHCP
    eth.connect();
    printf("IP Address is %s\n", eth.getIPAddress());

    UDPSocket server;
    server.bind(ECHO_SERVER_PORT);

    Endpoint client;
    char buffer[256];
    while (true) {
        printf("\nWait for packet...\n");
        int n = server.receiveFrom(client, buffer, sizeof(buffer));

        printf("Received packet from: %s\n", client.get_address());
        server.sendTo(client, buffer, n);
    }
}

Accepted Answer

余計なお世話だ。

posted by king tar 30 Oct 2014