C语言创建动态dll和调用dll(visual studio 2013环境下)

 更新时间:2017年11月10日 09:51:42   作者:天南韩立  
本篇文章主要介绍了C语言创建动态dll和调用dll(visual studio 2013环境下),非常具有实用价值,需要的朋友可以参考下

第一部分:创建动态dll库。

1、打开visual studio 创建一个控制台应用程序。

2、选择DLL,空项目。


3、点击源文件,创建一个main.c文件

4、在main.c中写入一个简单的函数,内容如下:

__declspec(dllexport) 
 int mymax(int a,int b){ 
  return a + b; 
 } 

5、编译生成。

6、在项目的目录有dll和lib两个生成好的文件。

第二部分:在新建项目中使用dll。

7、新建一个c的控制台应用程序UseDll,把Dll.dll放入Debug目录下。

8、把Dll.lib放入UserDll目录下。

9、在UseDll项目中新建一个源文件use.c,代码如下:

#include<stdio.h> 
 
#pragma comment(lib,"Dll.lib") 
 
int mymax(int a,int b); 
 
int main(){ 
 printf("调用动态dll函数的结果:%d",mymax(5,6)); 
 getchar(); 
 return 0; 
} 

10、运行结果如下

PS:vs2013调试程序时出现“计算机丢失.dll文件”

在VS环境下能够编译成功,但是在运行.exe文件时,出现“计算机丢失xxx.dll文件”的提示的解决方式。

发生这种问题的根本原因在于环境变量的设置上,计算机只会在path下包含的目录里去寻找程序所要运行的.dll文件,若我们所要使用到的.dll文件没有包含在环境变量path中,则会发生错误:计算机丢失xxx.dll文件。

工具/原料

  1. VS2013或者其他版本
  2. VTK库或者其他库

方法/步骤

这里以丢失vtkIOPLY-7.0-gd.dll文件为例(主要是关于PCL1.8.0),找到VTK的安装目录下的bin文件夹(包含vtkIOPLY-7.0-gd.dll),我的bin文件夹是在C:\Program Files (x86)\PCL 1.8.0\3rdParty\VTK\bin

将上述目录添加到环境变量Path中,如下图所示

重新开启项目,重新生成解决方案,则问题就会解决

注意事项

这里不仅仅是针对vtkIOPLY-7.0-gd.dll文件,任何丢失.dll文件都可以使用此方式解决

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • QString使用正则操作的接口实现

    QString使用正则操作的接口实现

    这篇文章主要介绍了QString使用正则操作的接口实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • C 标准I/O库的粗略实现教程

    C 标准I/O库的粗略实现教程

    下面小编就为大家分享一篇C 标准I/O库的粗略实现教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • C/C++实现捕获所有信号的示例详解

    C/C++实现捕获所有信号的示例详解

    Linux的信号机制大部分情况下用不到,但是由于大部分信号的默认处理是终止进程,不正确处理会惹麻烦,所以我们来看看如何使用C/C++实现捕获所有信号吧
    2024-03-03
  • C语言超详细讲解文件的操作

    C语言超详细讲解文件的操作

    C语言文件操作的方法有很多,函数也有很多你知道哪些呢?下面是小编为大家带来的C语言文件操作的方法,欢迎阅读
    2022-04-04
  • json error: Use of overloaded operator [] is ambiguous错误的解决方法

    json error: Use of overloaded operator [] is ambiguous错误的解决方

    今天小编就为大家分享一篇关于json error: Use of overloaded operator [] is ambiguous错误的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • C语言实现BMP图像的读写功能

    C语言实现BMP图像的读写功能

    这篇文章主要介绍了C语言实现BMP图像的读写功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 带你了解C++this指针的用法及其深究

    带你了解C++this指针的用法及其深究

    这篇文章主要介绍了C++中this指针的用法,对初学者而言是非常重要的概念,必须加以熟练掌握,需要的朋友可以参考下,希望能给你带来帮助
    2021-08-08
  • C++使用opencv读取图片的操作代码(图像处理)

    C++使用opencv读取图片的操作代码(图像处理)

    这篇文章主要介绍了C++使用opencv读取图片,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C语言 array数组的用法详解

    C语言 array数组的用法详解

    数组是指一组数据的集合,(容器)数组中的每个数据称为元素。在Java中,数组也是Java对象。数组中的元素可以是任意类型(包括基本类型和引用类),但同一个数组里只能存放类型相同的元素
    2021-10-10
  • C语言冷门知识之你可能没听过的柔性数组

    C语言冷门知识之你可能没听过的柔性数组

    柔性数组(Flexible Array)是引入的一个新特性,它允许你在定义结构体时创建一个空数组,而这个数组的大小可以在程序运行的过程中根据你的需求进行更改特别注意的一点是:这个空数组必须声明为结构体的最后一个成员,并且还要求这样的结构体至少包含一个其他类型的成员
    2021-10-10

最新评论