How to resolve: error LNK2001: unresolved external symbol "public: static void *
-
Hi All,
I'm trying to create a C++ DLL using the WinInet API, but for some odd reason, I get no errors during compiling but get external link errors regarding variables within my class. Any idea how I can resolve this? Visual Studio 2015.
----------------------------------------header test.h -------------------------------------------
// #include "stdafx.h"
using namespace std;
// #include
#include
#include
#include
#include
#include
#include
//#include
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "user32.lib")
#define FTP_FUNCTIONS_BUFFER_SIZE MAX_PATH+8namespace Win32_FTP
{
class FTP_Win32_ClientV1
{
private:public: static LPCWSTR sFileSearch; static char \* sIpAddress; static LPCWSTR sUsername; static LPCWSTR sPassword; static string sRemoteDir; static string sLocalDir; static string sFilename; static DWORD dwError; static HINTERNET hFTPConnect; static HINTERNET hFind; static HINTERNET hConnect; static HANDLE hFile; static WIN32\_FIND\_DATA FindFileData; static string strTemp; static \_\_declspec(dllexport) void Test1(); static \_\_declspec(dllexport) void FtpCloseConnection(); };
}
----------------------------------------source test.cpp -------------------------------------------
//using namespace std;
#include
#include "test.h"
// using namespace std;namespace Win32_FTP
{void FTP\_Win32\_Client::Test1() { cout << "This is a test from Cplus to Csharp DLL"; } void FTP\_Win32\_Client::FtpCloseConnection() { InternetCloseHandle(FTP\_Win32\_Client::hFind); InternetCloseHandle(FTP\_Win32\_Client::hFTPConnect); InternetCloseHandle(FTP\_Win32\_Client::hConnect); }
}
***************************LINK ERRORS ************************
Test.obj : error LNK2001: unresolved external symbol "public: static void * Win32_FTP::FTP_Win32_Client::hFTPConnect" (?hFTPConnect@FTP_Win32_Client@Win32_F -
Hi All,
I'm trying to create a C++ DLL using the WinInet API, but for some odd reason, I get no errors during compiling but get external link errors regarding variables within my class. Any idea how I can resolve this? Visual Studio 2015.
----------------------------------------header test.h -------------------------------------------
// #include "stdafx.h"
using namespace std;
// #include
#include
#include
#include
#include
#include
#include
//#include
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "user32.lib")
#define FTP_FUNCTIONS_BUFFER_SIZE MAX_PATH+8namespace Win32_FTP
{
class FTP_Win32_ClientV1
{
private:public: static LPCWSTR sFileSearch; static char \* sIpAddress; static LPCWSTR sUsername; static LPCWSTR sPassword; static string sRemoteDir; static string sLocalDir; static string sFilename; static DWORD dwError; static HINTERNET hFTPConnect; static HINTERNET hFind; static HINTERNET hConnect; static HANDLE hFile; static WIN32\_FIND\_DATA FindFileData; static string strTemp; static \_\_declspec(dllexport) void Test1(); static \_\_declspec(dllexport) void FtpCloseConnection(); };
}
----------------------------------------source test.cpp -------------------------------------------
//using namespace std;
#include
#include "test.h"
// using namespace std;namespace Win32_FTP
{void FTP\_Win32\_Client::Test1() { cout << "This is a test from Cplus to Csharp DLL"; } void FTP\_Win32\_Client::FtpCloseConnection() { InternetCloseHandle(FTP\_Win32\_Client::hFind); InternetCloseHandle(FTP\_Win32\_Client::hFTPConnect); InternetCloseHandle(FTP\_Win32\_Client::hConnect); }
}
***************************LINK ERRORS ************************
Test.obj : error LNK2001: unresolved external symbol "public: static void * Win32_FTP::FTP_Win32_Client::hFTPConnect" (?hFTPConnect@FTP_Win32_Client@Win32_FHave a look at [Linking errors while linking a dll in c++](https://social.msdn.microsoft.com/Forums/en-US/f3b696ec-2a9f-4c9f-a50c-92395008c3bf/linking-errors-while-linking-a-dll-in-c?forum=Vsexpressvc) and many other discussions here: [Google](https://www.google.com/search?newwindow=1&ei=LidlXLKjJYXFwQKnsrOYAw&q=error+LNK2001%3A+unresolved+external+symbol+dll+class&oq=error+LNK2001%3A+unresolved+external+symbol+dll+class&gs\_l=psy-ab.3...1008.15703..16700...4.0..0.505.1494.10j3j5-1......0....1..gws-wiz.......0i71j35i39j0i20i263j0j0i22i30j0i22i10i30j33i160j33i21.oA1rbIz38WU)
-
Hi All,
I'm trying to create a C++ DLL using the WinInet API, but for some odd reason, I get no errors during compiling but get external link errors regarding variables within my class. Any idea how I can resolve this? Visual Studio 2015.
----------------------------------------header test.h -------------------------------------------
// #include "stdafx.h"
using namespace std;
// #include
#include
#include
#include
#include
#include
#include
//#include
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "user32.lib")
#define FTP_FUNCTIONS_BUFFER_SIZE MAX_PATH+8namespace Win32_FTP
{
class FTP_Win32_ClientV1
{
private:public: static LPCWSTR sFileSearch; static char \* sIpAddress; static LPCWSTR sUsername; static LPCWSTR sPassword; static string sRemoteDir; static string sLocalDir; static string sFilename; static DWORD dwError; static HINTERNET hFTPConnect; static HINTERNET hFind; static HINTERNET hConnect; static HANDLE hFile; static WIN32\_FIND\_DATA FindFileData; static string strTemp; static \_\_declspec(dllexport) void Test1(); static \_\_declspec(dllexport) void FtpCloseConnection(); };
}
----------------------------------------source test.cpp -------------------------------------------
//using namespace std;
#include
#include "test.h"
// using namespace std;namespace Win32_FTP
{void FTP\_Win32\_Client::Test1() { cout << "This is a test from Cplus to Csharp DLL"; } void FTP\_Win32\_Client::FtpCloseConnection() { InternetCloseHandle(FTP\_Win32\_Client::hFind); InternetCloseHandle(FTP\_Win32\_Client::hFTPConnect); InternetCloseHandle(FTP\_Win32\_Client::hConnect); }
}
***************************LINK ERRORS ************************
Test.obj : error LNK2001: unresolved external symbol "public: static void * Win32_FTP::FTP_Win32_Client::hFTPConnect" (?hFTPConnect@FTP_Win32_Client@Win32_FClass static variables, like
Win32_FTP::FTP_Win32_Client::hFTPConnect
must be also defined in one source file. That is you have to writeHINTERNET Win32_FTP::FTP_Win32_Client::hFTPConnect;
(and so on...) in your
test.cpp
source file. An altrernative, available only withC++ 17
compliant compilers is to declare such variablesinline
inside the header file (see, for instance INLINE VARIABLES[^]). -
Hi All,
I'm trying to create a C++ DLL using the WinInet API, but for some odd reason, I get no errors during compiling but get external link errors regarding variables within my class. Any idea how I can resolve this? Visual Studio 2015.
----------------------------------------header test.h -------------------------------------------
// #include "stdafx.h"
using namespace std;
// #include
#include
#include
#include
#include
#include
#include
//#include
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "user32.lib")
#define FTP_FUNCTIONS_BUFFER_SIZE MAX_PATH+8namespace Win32_FTP
{
class FTP_Win32_ClientV1
{
private:public: static LPCWSTR sFileSearch; static char \* sIpAddress; static LPCWSTR sUsername; static LPCWSTR sPassword; static string sRemoteDir; static string sLocalDir; static string sFilename; static DWORD dwError; static HINTERNET hFTPConnect; static HINTERNET hFind; static HINTERNET hConnect; static HANDLE hFile; static WIN32\_FIND\_DATA FindFileData; static string strTemp; static \_\_declspec(dllexport) void Test1(); static \_\_declspec(dllexport) void FtpCloseConnection(); };
}
----------------------------------------source test.cpp -------------------------------------------
//using namespace std;
#include
#include "test.h"
// using namespace std;namespace Win32_FTP
{void FTP\_Win32\_Client::Test1() { cout << "This is a test from Cplus to Csharp DLL"; } void FTP\_Win32\_Client::FtpCloseConnection() { InternetCloseHandle(FTP\_Win32\_Client::hFind); InternetCloseHandle(FTP\_Win32\_Client::hFTPConnect); InternetCloseHandle(FTP\_Win32\_Client::hConnect); }
}
***************************LINK ERRORS ************************
Test.obj : error LNK2001: unresolved external symbol "public: static void * Win32_FTP::FTP_Win32_Client::hFTPConnect" (?hFTPConnect@FTP_Win32_Client@Win32_F -
Hi All,
I'm trying to create a C++ DLL using the WinInet API, but for some odd reason, I get no errors during compiling but get external link errors regarding variables within my class. Any idea how I can resolve this? Visual Studio 2015.
----------------------------------------header test.h -------------------------------------------
// #include "stdafx.h"
using namespace std;
// #include
#include
#include
#include
#include
#include
#include
//#include
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "user32.lib")
#define FTP_FUNCTIONS_BUFFER_SIZE MAX_PATH+8namespace Win32_FTP
{
class FTP_Win32_ClientV1
{
private:public: static LPCWSTR sFileSearch; static char \* sIpAddress; static LPCWSTR sUsername; static LPCWSTR sPassword; static string sRemoteDir; static string sLocalDir; static string sFilename; static DWORD dwError; static HINTERNET hFTPConnect; static HINTERNET hFind; static HINTERNET hConnect; static HANDLE hFile; static WIN32\_FIND\_DATA FindFileData; static string strTemp; static \_\_declspec(dllexport) void Test1(); static \_\_declspec(dllexport) void FtpCloseConnection(); };
}
----------------------------------------source test.cpp -------------------------------------------
//using namespace std;
#include
#include "test.h"
// using namespace std;namespace Win32_FTP
{void FTP\_Win32\_Client::Test1() { cout << "This is a test from Cplus to Csharp DLL"; } void FTP\_Win32\_Client::FtpCloseConnection() { InternetCloseHandle(FTP\_Win32\_Client::hFind); InternetCloseHandle(FTP\_Win32\_Client::hFTPConnect); InternetCloseHandle(FTP\_Win32\_Client::hConnect); }
}
***************************LINK ERRORS ************************
Test.obj : error LNK2001: unresolved external symbol "public: static void * Win32_FTP::FTP_Win32_Client::hFTPConnect" (?hFTPConnect@FTP_Win32_Client@Win32_FDefinitely remove the line: using namespace std; My advice: NEVER do that.