jeremycw / httpserver.h

Single header library for writing non-blocking HTTP servers in C
MIT License
1.78k stars 143 forks source link

error LNK1120: n unresolved externals #51

Closed KochC closed 3 years ago

KochC commented 3 years ago

this is kind of my code:

#include "include/httpserver.h"
...

#define HTTPSERVER_IMPL
#define RESPONSE "Hello, World!"

...

void handle_request(struct http_request_s *request)
{
    struct http_response_s *response = http_response_init();
    http_response_status(response, 200);
    http_response_header(response, "Content-Type", "text/plain");
    http_response_body(response, RESPONSE, sizeof(RESPONSE) - 1);
    http_respond(request, response);
}

...

void Webserver_Runner(bool *run, int *i)
{
    struct http_server_s *server = http_server_init(8080, handle_request);
    http_server_listen(server);
}

main(){
        ....
        int counter = 0;
    ThreadHandler<int> *th3 = new ThreadHandler<int>();
    th3->setRunner(Webserver_Runner, &counter);
    th3->start();
        ...
}

But when I try to build it using nmake I get the following result:

main.obj : error LNK2019: unresolved external symbol _http_server_init referenced in function "void __cdecl Webserver_Runner(bool *,int *)" (?Webserver_Runner@@YAXPA_NPAH@Z)
main.obj : error LNK2019: unresolved external symbol _http_server_listen referenced in function "void __cdecl Webserver_Runner(bool *,int *)" (?Webserver_Runner@@YAXPA_NPAH@Z)
main.obj : error LNK2019: unresolved external symbol _http_response_init referenced in function "void __cdecl handle_request(struct http_request_s *)" (?handle_request@@YAXPAUhttp_request_s@@@Z)
main.obj : error LNK2019: unresolved external symbol _http_response_status referenced in function "void __cdecl handle_request(struct http_request_s *)" (?handle_request@@YAXPAUhttp_request_s@@@Z)
main.obj : error LNK2019: unresolved external symbol _http_response_header referenced in function "void __cdecl handle_request(struct http_request_s *)" (?handle_request@@YAXPAUhttp_request_s@@@Z)
main.obj : error LNK2019: unresolved external symbol _http_response_body referenced in function "void __cdecl handle_request(struct http_request_s *)" (?handle_request@@YAXPAUhttp_request_s@@@Z)
main.obj : error LNK2019: unresolved external symbol _http_respond referenced in function "void __cdecl handle_request(struct http_request_s *)" (?handle_request@@YAXPAUhttp_request_s@@@Z)
main.exe : fatal error LNK1120: 7 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Tools\MSVC\14.28.29333\bin\HostX86\x86\cl.EXE"' : return code '0x2'
Stop.

Do I need to link the h somehow?

KochC commented 3 years ago
#include "include/httpserver.h"
...

#define HTTPSERVER_IMPL

wrong direction. define needs to be first.