Pliki .dll w innym folderze niż .exe

0

Oto moja aplikacja exe + kilka plikow dll:

title

Chciał bym aby wszystkie pliki .dll były wywoływane z folderu "test", jak to zrobić?

3

trzeba je tam przenieść i dodać do zmiennej PATH ścieżkę do tego folderu. Jednak może to nie zadziałać jeśli dll są ładowane dynamicznie i jest podawana do nich ścieżka bezwzględna.

1

Jest api na ustawienie lokalizacji dll-ek.
https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setdlldirectoryw

The directory to be added to the search path. If this parameter is an empty string (""), the call removes the current directory from the default DLL search order. If this parameter is NULL, the function restores the default search order.

https://docs.microsoft.com/pl-pl/windows/desktop/api/libloaderapi/nf-libloaderapi-adddlldirectory

Poza tym, jeśli ładujesz dll-ki dynamicznie, możesz użyć ścieżki relatywnej lub bezwzględnej.

1

Użyj statycznego linkowania i nie martw się o dll'ki obok aplikacji ;)

0
MarekR22 napisał(a):

Jest api na ustawienie lokalizacji dll-ek.
https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setdlldirectoryw

The directory to be added to the search path. If this parameter is an empty string (""), the call removes the current directory from the default DLL search order. If this parameter is NULL, the function restores the default search order.

https://docs.microsoft.com/pl-pl/windows/desktop/api/libloaderapi/nf-libloaderapi-adddlldirectory

Poza tym, jeśli ładujesz dll-ki dynamicznie, możesz użyć ścieżki relatywnej lub bezwzględnej.

Potrzebuje jakiegos przykładu pownieważ nie jestem dobrym programerem, oto co dodalem w main.cpp

/*
 * Copyright (c) 2010-2017 OTClient <https://github.com/edubart/otclient>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

#include <framework/core/application.h>
#include <framework/core/resourcemanager.h>
#include <framework/luaengine/luainterface.h>
#include <client/client.h>

int main(int argc, const char* argv[])
{
    std::vector<std::string> args(argv, argv + argc);

    // setup application name and version
    g_app.setName("app");
    g_app.setCompactName("app");
    g_app.setVersion(VERSION);

    // initialize application framework and otclient
    g_app.init(args);
    g_client.init(args);

    // find script init.lua and run it
    if(!g_resources.discoverWorkDir("init.lua"))
        g_logger.fatal("Unable to find work directory, the application cannot be initialized.");

    if(!g_lua.safeRunScript("init.lua"))
        g_logger.fatal("Unable to run script init.lua!");

    // the run application main loop
    g_app.run();

    // unload modules
    g_app.deinit();

    // terminate everything and free memory
    g_client.terminate();
    g_app.terminate();
    return 0;
}

BOOL SetDllDirectoryW(
	LPCWSTR lpPathName
);

BOOL SetDllDirectoryW(LPCWSTR lpPathName)
{
	return 0;
}

Nie wiem co dalej.

Spine napisał(a):

Użyj statycznego linkowania i nie martw się o dll'ki obok aplikacji ;)

Tutaj takze malo mi to mowi.

0

Tak, też to zauważyłem, że biblioteki ładowane są przed wywołaniem funkcji main.cpp, hmm niby prosta rzecz a nie ma dobrego rozwiazania. Ciagle czekam na propozycje i przeszukuje internet.
Dobrego poradnika jak polaczyć pliki dll z exe też nie znalazłem.

1

W Visualu można ustawić, które DLL-ki mają być ładowane z opóźnieniem. Jeśli korzystasz z VC++, użyj opcji /DELAYLOAD.

0

Patrząc na ten kod wniosek jest prosty.

  • kod jest za prosty, by był sens kombinować z ładowaniem bibliotek z innego miejsca (jak zobaczyłem temat spodziewałem się, jakiś pluginów, albo alternatywnego ładowania aplikacji w trybie testowym)
  • przed @ruth jest jeszcze długa droga i nie powinien na razie przejmować się takimi niskopoziomowymi detalami. To ma po prostu zadziałać, a poprawność techniczna jest nieistotna, więc odpowiedź od @abrakadaber jest w zupełności wystarczająca. Ja bym jednak namawiał @ruth z rezygnacji tego dziwnego wymagania.
0

Myślę ze to nie jest dziwne wymaganie po prostu jest to kwestia estetyki. Wszystkie dll do osobnego folderu lepiej wygląda.

0

Znalazlem sposob na stackoverflow żeby ustawic delay na ladowanie plikow .dll w visualu a potem uzyc funkcji "SetDllDirectory" lecz nie moge tego zdefiniowac.
title

0

Definicje _WIN32_WINNT daj przed załączeniem windows.h.

0

Daj całą apkę z dll'kami do podfolderu. Napisz drugi program, który odpali apkę z podfolderu.

0
0x666 napisał(a):

Definicje _WIN32_WINNT daj przed załączeniem windows.h.

title
Cos tu nie dziala. Wzoruje sie na tym:
https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setdlldirectorya

Spine napisał(a):

Daj całą apkę z dll'kami do podfolderu. Napisz drugi program, który odpali apkę z podfolderu.

Jest to jakas myśl lecz kombinowana troche

2

Dlaczego używasz funkcji w wersji ANSI, skoro ścieżka jest unikodowa? Powinieneś użyć SetDllDirectoryW. Definicję _WIN32_WINNT i załączenie windows.h przesuń na sam początek pliku, niewykluczone, że któryś z wcześniejszych plików załącza ten plik systemowy i wtedy redefinicja nic nie zmienia.

1

W ogóle ten define jest zły. To że na msdn piszą: define _WIN32_WINNT as 0x0502 or later. to nie znaczy, że to ma wyglądać tak:

#define _WIN32_WINNT as 0x0502
#include <Windows.h>

tylko tak:

#define _WIN32_WINNT 0x0502
#include <Windows.h>

I oczywiście musisz się zastosować do rad z postu poprzedniego.

1

Nie znam się na Windows, ale z tego co mi wiadomo, to #define _WIN32_WINNT powinno być ustawione z poziomu projektu. W projekcie się ustawia wspierany wersje Windows-a i to automatycznie powinno ustawić wartość tego makra. Robienie tego bezpośrednio w kodzie to jest złą praktyką inżynierską.

2
MarekR22 napisał(a):

Nie znam się na Windows, ale z tego co mi wiadomo, to #define _WIN32_WINNT powinno być ustawione z poziomu projektu.

Może być, ale nie musi - przez długi czas standardowy projekt generowany przez Visuala definiował to w kodzie w ramach prekompilowanego nagłówka.
Ostatnio coś tam się pozmieniało w szablonie projektu, ale nie pamiętam teraz szczegółów.

W każdym razie makro powinno być przed jakimikolwiek #include'ami, bo w sumie nie wiemy czy #include <jakaśLibka.h> nie ma w sobie #include <windows.h>.

Można też posłużyć się gotowymi stałymi, w ten sposób:

#include <SDKDDKVer.h>
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#include <Windows.h>

https://msdn.microsoft.com/en-us/library/6sehtctf.aspx

0

Dzieki zdefiniowalem juz ta funkcje trzeba bylo dac na sama gore lecz mam inne bledy teraz, gdzies w bibliotekach:

Severity	Code	Description	Project	File	Line	Suppression State
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	437	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	438	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	439	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	446	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	452	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	453	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	454	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	470	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	480	
Error (active)	E0040	expected an identifier	otclient	C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\SDK\ScopeCppSDK\SDK\include\shared\ws2def.h	482	
Warning	C4005	'_WIN32_WINNT': macro redefinition	otclient	c:\users\tomek\desktop\visual17\otclient-master\src\main.cpp	23	
Warning	C4005	'AF_IPX': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	103	
Warning	C4005	'AF_MAX': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	136	
Warning	C4005	'SO_DONTLINGER': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	185	
Error	C2011	'sockaddr': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	235	
Error	C2059	syntax error: 'constant'	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	437	
Error	C3805	'constant': unexpected token, expected either '}' or a ','	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	437	
Warning	C4005	'IN_CLASSA': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	572	
Warning	C4005	'IN_CLASSB': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	578	
Warning	C4005	'IN_CLASSC': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	584	
Warning	C4005	'INADDR_ANY': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	595	
Warning	C4005	'INADDR_BROADCAST': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	597	
Error	C2011	'sockaddr_in': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\shared\ws2def.h	631	
Error	C2011	'fd_set': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	136	
Warning	C4005	'FD_CLR': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	156	
Warning	C4005	'FD_SET': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	171	
Error	C2011	'timeval': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	180	
Error	C2011	'hostent': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	236	
Error	C2011	'netent': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	249	
Error	C2011	'servent': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	256	
Error	C2011	'protoent': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	268	
Error	C2011	'WSAData': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	364	
Error	C2011	'sockproto': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	462	
Error	C2011	'linger': 'struct' type redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	504	
Warning	C4005	'SOMAXCONN': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	517	
Warning	C4005	'FD_READ': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	551	
Warning	C4005	'FD_WRITE': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	554	
Warning	C4005	'FD_OOB': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	557	
Warning	C4005	'FD_ACCEPT': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	560	
Warning	C4005	'FD_CONNECT': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	563	
Warning	C4005	'FD_CLOSE': macro redefinition	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	566	
Error	C2375	'accept': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1622	
Error	C2375	'bind': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1644	
Error	C2375	'closesocket': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1665	
Error	C2375	'connect': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1682	
Error	C2375	'ioctlsocket': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1703	
Error	C2375	'getpeername': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1724	
Error	C2375	'getsockname': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1745	
Error	C2375	'getsockopt': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1766	
Error	C2375	'htonl': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1791	
Error	C2375	'htons': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1808	
Error	C2375	'inet_addr': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1826	
Error	C2375	'inet_ntoa': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1844	
Error	C2375	'listen': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1944	
Error	C2375	'ntohl': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1963	
Error	C2375	'ntohs': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1980	
Error	C2375	'recv': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	1997	
Error	C2375	'recvfrom': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2020	
Error	C2375	'select': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2047	
Error	C2375	'send': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2072	
Error	C2375	'sendto': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2095	
Error	C2375	'setsockopt': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2122	
Error	C2375	'shutdown': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2147	
Error	C2375	'socket': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2167	
Error	C2375	'gethostbyaddr': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2192	
Error	C2375	'gethostbyname': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2214	
Error	C2375	'gethostname': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2231	
Error	C2375	'getservbyport': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2271	
Error	C2375	'getservbyname': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2290	
Error	C2375	'getprotobynumber': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2309	
Error	C2375	'getprotobyname': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2326	
Error	C2375	'WSAStartup': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2346	
Error	C2375	'WSACleanup': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2366	
Error	C2375	'WSASetLastError': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2383	
Error	C2375	'WSAGetLastError': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2400	
Error	C2375	'WSAIsBlocking': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2421	
Error	C2375	'WSAUnhookBlockingHook': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2439	
Error	C2375	'WSASetBlockingHook': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2457	
Error	C2375	'WSACancelBlockingCall': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2475	
Error	C2375	'WSAAsyncGetServByName': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2493	
Error	C2375	'WSAAsyncGetServByPort': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2521	
Error	C2375	'WSAAsyncGetProtoByName': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2549	
Error	C2375	'WSAAsyncGetProtoByNumber': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2575	
Error	C2375	'WSAAsyncGetHostByName': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2601	
Error	C2375	'WSAAsyncGetHostByAddr': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2627	
Error	C2375	'WSACancelAsyncRequest': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2657	
Error	C2375	'WSAAsyncSelect': redefinition; different linkage	otclient	c:\program files (x86)\microsoft visual studio\2017\professional\sdk\scopecppsdk\sdk\include\um\winsock2.h	2675	

0

Tyle "redefinition" sugeruje, że nagłówek winsock2.h jest wciągany dwa razy a nie zawiera #pragma once albo odpowiednika. Spróbuj zmienić kolejność include'ów.

0
Azarien napisał(a):

Tyle "redefinition" sugeruje, że nagłówek winsock2.h jest wciągany dwa razy a nie zawiera #pragma once albo odpowiednika. Spróbuj zmienić kolejność include'ów.

Jak zmieniam kolejność to setDllDirectoryW staje się undefined.

Może to ma jakiś związek z tym że kiedyś żeby skompilować z "Visual Studio 2017 - Windows XP (v141_xp)" musiałem dodać w VC++ directories -> include takie coś:
title

1 użytkowników online, w tym zalogowanych: 0, gości: 1