可以在项目中通过使用静态链接库或手动引用libssl.dll来避免重复引用libssl.dll的问题。
示例代码:
#include
#include
#include "openssl/ssl.h"
#pragma comment(lib, "libssl.lib")
int main() {
SSL_library_init();
SSL_CTX* ctx = SSL_CTX_new(SSLv23_client_method());
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SSL* ssl = SSL_new(ctx);
SSL_set_fd(ssl, sock);
int ret = SSL_connect(ssl);
if (ret == 1) {
printf("SSL connection is successful!\n");
}
SSL_free(ssl);
SSL_CTX_free(ctx);
closesocket(sock);
return 0;
}
示例代码:
#include
#include
#include "openssl/ssl.h"
int main() {
HINSTANCE hDLL = LoadLibrary("libssl.dll");
if (hDLL == NULL) {
printf("LoadLibrary failed!\n");
return -1;
}
PF_SSL_library_init SSL_library_init = (PF_SSL_library_init)GetProcAddress(hDLL, "SSL_library_init");
PF_SSL_CTX_new SSL_CTX_new = (PF_SSL_CTX_new)GetProcAddress(hDLL, "SSL_CTX_new");
PF_socket socket = (PF_socket)GetProcAddress(hDLL, "socket");
PF_SSL_new SSL_new = (PF_SSL_new)GetProcAddress(hDLL, "SSL_new");
PF_SSL_set_fd SSL_set_fd = (PF_SSL_set_fd)GetProcAddress(hDLL, "SSL_set_fd");
PF_SSL_connect SSL_connect = (PF_SSL_connect)GetProcAddress(hDLL, "SSL_connect");
if (SSL_library_init