VS生成dll,调用dll无法解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



前言

VS生成DLL工程,并调用


提示:以下是本篇文章正文内容,下面案例可供参考


一、dll工程

1、dll(动态链接库),把已有的VS工程打包成DLL,供第三方使用,只需要在VS工程中保留接口函数。工程参数配置:属性-》配置属性-》配置类型选择动态库dll,然后回到主页,选择重新生成解决方案。

 

这时候一般工程都已经在debug/release文件中生成.dll和lib,有些没有找到dll,只有一个.exe,怎么也生成不了dll,这种情况需要选择属性-》链接器-》输出文件:输入$(OutDir)$(TargetName)$(TargetExt),有些工程默认输出.exe,恶心到了。

 

 2、VS工程配置

上述把DLL生成环境配好,DLL还不能使用,需要新建.def文件,操作添加-》新建项-》代码-》模块定义文件(.def),默认名字就好。

.def文件设置dll调用函数,接口函数在其他.c文件内编写,def只配置输出接口。

LIBRARY "convbin.dll"
EXPORTS
rtklib_convin1 
con_add1
con_add2

 如果不适用def方式,可以选择建立.h文件。如下图建立了三个接口函数,这三个函数也是在其他.c内编写。

#pragma once
__declspec(dllexport) int rtklib_convin1(char firm_name[], char time[]);
__declspec(dllexport) int con_add1(int a, int b);
__declspec(dllexport) int con_add2(int a, int b);

 3、输出

完成了环境和接口的配置,点击生成-》重新生成解决方案,只有定义了接口的函数,其他工程才能调用。


二、调用DLL


1.新建一个工程

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create_default_https_context = ssl._create_unverified_context 


2.复制之前在生成DLL工程内debug/release文件中的.DLL和.LIB到新工程目录下。

 3、在新工程内资源文件中把dll和lib包含进去。

4、代码

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//#pragma comment(lib,"Project1.lib")
#pragma comment(lib,"Project3.lib")
#pragma comment(lib,"convbin.lib")

__declspec(dllexport) void add_main();
//int add1(int a, int b);
extern "C" __declspec(dllexport) int rtklib_convin1(char firm_name[], char time[]);
extern "C" __declspec(dllexport) int con_add1(int a, int b);
extern "C" __declspec(dllexport) int con_add2(int a, int b);
// 静态调用DLL库
int main()
{
	char time[20] = "2020_12_28-9-0-0";
	char a[100] = "ReceivedTofile1-TCPCLIENT-2020_12_28_9-0-0.DAT";
	add_main();
   int sum = con_add2(6, 20);
	rtklib_convin1(a, time);
	printf("静态调用,sum = %d\n", sum);
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值