0

私はしばらくの間これに取り組んできました。IRC サーバーが ping を実行したときに適切な応答を返すには、基本的な IRC Ping Pong 関数が必要です。関数 get() の名前を別の名前に変更しましたが、まだエラーが発生しています。おそらく関数名 get() は、インクルードの1つまたは他の何かですでに定義されていると思いました。

#include "stdafx.h"
#include "Ping_Pong.h"
#include <iostream>
#include <ws2tcpip.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CWinApp theApp;

#define MT4_EXPFUNC __declspec(dllexport)
#pragma comment(lib, "Ws2_32.lib")

class MT4_EXPFUNC IRC {

private:
    char buf[513];
    char rbuf[513];
    char sbuf[513];
    char *tok;
    int recv_bytes;
    int irc_socket;
    struct addrinfo hints;
    struct addrinfo *results;
public:
    char *nick, *user, *host, *chan, *type, *mesg;
    int irc_connect(const char *host, const char *port, const char *nick);
    void socket_err(const char* err_string);
    //int join(const char *channel);

これは問題の関数の名前です

    int __stdcall get();

    char *check(const char* test_str);
    char *pop_arg(char **save_ptr);
    int init_comarg();
    int say(const char *channel, const char *message);
    int sayf(const char *channel, const char *message, ...);
    int mode(const char *channel, const char *mode, char *target);
    //void die();

};

そして、これは私が問題を抱えている機能です。

MT4_EXPFUNC int __stdcall IRC::get()
    {


    memset(rbuf, 0, 513);
    recv_bytes = recv(irc_socket, rbuf, sizeof(rbuf), 0);
    if (recv_bytes <= 0) {
        return -1;
    }
    std::cout << rbuf;
    // Auto-Respond to PING messages.
    if (rbuf[0] == 'P' && rbuf[1] == 'I') {
        tok = strtok(rbuf, "PING :");
        sprintf(buf, "PONG %s", tok-1 );
        send(irc_socket, buf, strlen(buf), 0);
        std::cout << buf;
        memset(buf, 0, 513);
    }
    if ( strstr(rbuf, "PRIVMSG")) {
        memcpy(sbuf, rbuf, 513);
        nick = strtok(sbuf, "!") + 1;
        user = strtok(NULL, "@");
        host = strtok(NULL, " ");
        type = strtok(NULL, " ") - 1;
        chan = strtok(NULL, " ");
        mesg = strtok(NULL, ":");
    }
    return 1;
    }
4

1 に答える 1

0

以下にリンクされているチュートリアルでは、次のコードで.defファイルが提案されました。

Library "Ping_Pong"
Export   get

.def を削除したところ、機能しました。

http://www.xpworx.com/metatrader-mql-articles/mql4-articles/create-your-own-metatrader-extension-dll.php

于 2012-05-01T19:04:03.633 に答える