在win10的c++代码中手动加载动态库

在C++代码中手动加载动态库示例如下:

#include <stdio.h>
#include <Windows.h>
#include <string>
#include <iostream>

using namespace std;
typedef int(*Dllfun)(int, int,char * ); //动态库的接口函数的声明,这个指针类型,要和你调用的函数类型和参数保持一致

Dllfun get_verify_func(char library_path[1024]) {
    HINSTANCE hdll;
    hdll = LoadLibrary(library_path);//加载.dll文件
    if (hdll == NULL)
    {
        cout << "#######" << endl;
        FreeLibrary(hdll);
    }
    Dllfun GetEncryptInfo = (Dllfun)GetProcAddress(hdll, "GetEncryptInfo");//GetEncryptlnfo为动态库的接口函数
    if (GetEncryptInfo == NULL)
    {
        FreeLibrary(hdll);
    }
    return GetEncryptInfo;
}


int main(int argc, char* argv[])
{
    Dllfun GetEncryptInfo;
    GetEncryptInfo = get_verify_func("D:/java_project/VIN/VIN/test/src/com/wintone/vinjava/Lib/libmanager.dll");
    int inProcId=23;
    int nOption=0;
    string lience_path= "D:/java_project/VIN/VIN/test/src/com/wintone/vinjava/Lib";
    char exePath[2048];
    int i;
    for (i = 0; i<lience_path.length(); i++)
        exePath[i] = lience_path[i];
    exePath[i] = '\0';
    int iRetCode = GetEncryptInfo(23, 0, exePath);
    if (iRetCode != 0)
    {
        printf("\r\n fail! GetEncryptInfo return is %d\r\n", iRetCode);
    }
    else
    {
        printf("\r\n success! GetEncryptInfo return is %d;\r\n", iRetCode);
    }
    system("pause");
    return 0;
}

动态库中的接口函数:

int GetEncryptInfo(int inProductId, int nOptions,char pManagerSrvPath[MAX_PATH])

参考文章:

https://blog.csdn.net/roshy/article/details/81944264

https://www.cnblogs.com/marblemm/p/7804056.html


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值