I'm trying to use a library in Qt5 build from there: Link
I have added the .lib
and .h
file to my qmake file like this:
INCLUDEPATH += C:\xxxxxx\Privoxy\include
LIBS += -LC:\xxxxxx\Privoxy\lib -lLibPrivoxy
And try to call StartPrivoxy
function in my .cpp
file:
#include <QCoreApplication>
#include "WinPrivoxy/libprivoxy.h"
QString file = QCoreApplication::applicationDirPath() + "/privoxy.conf";
StartPrivoxy(file.toLocal8Bit().data());
And when I hit compile, the compiler gave me this error:
error LNK2019: unresolved external symbol "__declspec(dllimport) int __stdcall StartPrivoxy(char *)" (__imp_?StartPrivoxy@@YGHPAD@Z)
The .lib
file's .h
and .c
file are:
// libprivoxy.h
#ifndef _LIBPRIVOXY_EXPORT_H
#define _LIBPRIVOXY_EXPORT_H
#ifdef LIBPRIVOXY_EXPORTS
#define LIBPRIVOXY_API __declspec(dllexport)
#else
#define LIBPRIVOXY_API __declspec(dllimport)
#endif
LIBPRIVOXY_API int __stdcall StartPrivoxy(char *config_full_path);
LIBPRIVOXY_API void __stdcall StopPrivoxy();
LIBPRIVOXY_API int __stdcall IsRunning();
#endif
// libprivoxy.c
#include "libprivoxy.h"
#include "miscutil.h"
#include <assert.h>
char g_privoxy_config_full_path[1024] = { 0 };
extern HMODULE g_hLibPrivoxyModule = NULL;
extern int g_terminate;
extern void close_privoxy_listening_socket();
LIBPRIVOXY_API int __stdcall StartPrivoxy(char *config_full_path)
{
g_terminate = 0;
strcpy_s(g_privoxy_config_full_path, 1024, config_full_path);
// start privoxy
WinMain( NULL,NULL,NULL, 0);
return 0;
}
LIBPRIVOXY_API void __stdcall StopPrivoxy()
{
g_terminate = 1;
close_privoxy_listening_socket();
}
LIBPRIVOXY_API int __stdcall IsRunning()
{
return 1 == g_terminate ? 0 : 1;
}
I'm using Qt 14.0.0
and Visual Studio 2017 Enterprise
on Windows 10 18363.592