0

我尝试使用 Visual Studio 2017 构建一个 DLL 以允许我的 MT4(一个著名的 FX 电子交易平台)也通过套接字与我的服务器通信(参见下面的代码,它在控制台程序中工作)并遇到了 LNK2019错误。

根据我从各种在线博客/论坛帖子中了解到的情况,这是由于依赖关系/从静态库中导出动态库等,但不知道如何修复它。

MT4.h

#pragma once  
#ifdef MT4_EXPORTS  
#define MT4_API __declspec(dllexport)   
#else  
#define MT4_API __declspec(dllimport)   
#endif  

namespace MT4
{
    class Functions
    {
    public:
        static MT4_API void main();
    };
}

MT4.cpp

#pragma comment(lib, "Ws2_32.lib")

#include "stdafx.h"
#include <WinSock2.h>
#include <WS2tcpip.h>
#include "MT4.h"

namespace MT4
{
    void Functions::main()
    {
        char ipstr[] = "192.168.1.160";

        int r;
        WSAData wsaData;
        WORD DLLVersion;
        DLLVersion = MAKEWORD(2, 1);
        r = WSAStartup(DLLVersion, &wsaData);

        SOCKADDR_IN addr;
        int addlen = sizeof(addr);
        SOCKET sConnect;

        sConnect = socket(AF_INET, SOCK_STREAM, NULL);

        in_addr tmp = { 0 };
        InetPtonA(AF_INET, ipstr, &tmp);
        addr.sin_addr = tmp;
        addr.sin_family = AF_INET;
        addr.sin_port = htons(9898);

        connect(sConnect, (SOCKADDR*)&addr, sizeof(addr));

        closesocket(sConnect);
    }
}

错误信息:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK1120 6 unresolved externals  MT4 C:\Users\FutureC\source\repos\MT4\Debug\MT4.dll 1   
Error   LNK2019 unresolved external symbol __imp__closesocket@4 referenced in function "public: static void __cdecl MT4::Functions::main(void)" (?main@Functions@MT4@@SAXXZ)    MT4 C:\Users\FutureC\source\repos\MT4\MT4\MT4.obj   1   
Error   LNK2019 unresolved external symbol __imp__connect@12 referenced in function "public: static void __cdecl MT4::Functions::main(void)" (?main@Functions@MT4@@SAXXZ)   MT4 C:\Users\FutureC\source\repos\MT4\MT4\MT4.obj   1   
Error   LNK2019 unresolved external symbol __imp__htons@4 referenced in function "public: static void __cdecl MT4::Functions::main(void)" (?main@Functions@MT4@@SAXXZ)  MT4 C:\Users\FutureC\source\repos\MT4\MT4\MT4.obj   1   
Error   LNK2019 unresolved external symbol __imp__socket@12 referenced in function "public: static void __cdecl MT4::Functions::main(void)" (?main@Functions@MT4@@SAXXZ)    MT4 C:\Users\FutureC\source\repos\MT4\MT4\MT4.obj   1   
Error   LNK2019 unresolved external symbol __imp__WSAStartup@8 referenced in function "public: static void __cdecl MT4::Functions::main(void)" (?main@Functions@MT4@@SAXXZ) MT4 C:\Users\FutureC\source\repos\MT4\MT4\MT4.obj   1   
Error   LNK2019 unresolved external symbol __imp__inet_pton@12 referenced in function "public: static void __cdecl MT4::Functions::main(void)" (?main@Functions@MT4@@SAXXZ) MT4 C:\Users\FutureC\source\repos\MT4\MT4\MT4.obj   1   
4

0 回答 0