`
qifan.yang
  • 浏览: 52881 次
社区版块
存档分类
最新评论

C调用dll小结

 
阅读更多
环境:MinGW【windows下的GCC】, Notepad++

一:
随便写个C源文件test.c里面只有一个函数,如下:
int add(int x,int y)
{
	return x+y;
}

编译test.c为test.dll,使用命令:gcc -shared -Wl,--kill-at -o test.dll test.c

二:
再写调用测试C程序caldll.c,代码如下:
#include <windows.h>
#include <stdio.h>
#include <winbase.h>
typedef int (*MYPROC)(int ,int);
void main()
{
int res = 0;
HINSTANCE LibHandle;
MYPROC ProcAdd;
LibHandle = LoadLibrary("test.dll"); /*载入dll*/
ProcAdd = (MYPROC)GetProcAddress(LibHandle, "add"); /*获取函数sysbuf的地址*/
res =(ProcAdd) (4,4); /*ProcAdd就相当于函数 show123*/
printf("result: %i ",res);
}

编译这个程序,运行得到输出结果result: 8

gcc/bin目录设置为环境变量,这样方便命令窗口下使用

效果如图:


  • 大小: 11.8 KB
分享到:
评论

相关推荐

    Java调用Delphi开发的Dll小结[归类].pdf

    - 要使用JNI调用Delphi DLL,需要创建一个C接口作为桥接,将Delphi的函数包装在C函数中,然后再由JNI调用这些C函数。这涉及到了双层封装,可能会导致稳定性问题。 - 另一种方法是在Delphi开发DLL时直接引用`jni....

    Java调用Delphi开发的Dll小结.pdf

    - 使用`Native.loadLibrary`加载DLL,并通过`CLibrary.INSTANCE.Hello()`调用DLL函数。 总结,两种方法各有优缺点。JNI虽然灵活,但需要额外的C封装层,可能带来复杂性和稳定性问题。JNA则更简单,直接调用,但可能...

    VS2017 C++ 生成dll并调用

    通过VS2017,生成dll项目,生成dll,并在另外程序中调用dll。....................

    Java调用Delphi开发的Dll小结[定义].pdf

    - 使用`Native.loadLibrary()`加载DLL,并实例化接口,然后可以直接调用DLL中的函数。 在实际应用中,JNA通常比JNI更易用,因为它不需要像JNI那样编写C代码来封装Delphi的DLL。然而,如果需要访问更复杂的本地API...

    调用非托管DLL参数问题

    #### 小结 正确处理C#与非托管DLL之间的参数传递是实现跨语言编程的关键。通过上述介绍,我们可以了解到不同的参数类型在C#中的正确使用方法。需要注意的是,在实际开发过程中,还需要考虑到数据类型的转换、内存...

    VC调用matlab程序小结

    "VC调用matlab程序小结"的主题旨在探讨如何在VC环境下有效地利用MATLAB的功能,实现两者之间的无缝集成。这种技术常用于数据分析、信号处理、图像处理等复杂计算任务,因为MATLAB在这方面具有强大的库支持。 首先,...

    关于Fortran调用C++函数的小结.pdf

    在C++中,`extern "C"`用于告诉编译器按照C语言的规则处理函数名,避免C++的名称修饰(name mangling),这样Fortran就能识别和调用C++函数。例如,在`sub.h`头文件中,我们声明了一个名为`sub`的C兼容函数。 4. *...

    xmlhttp对象_VC中调用XMLHTTP对象访问

    #### 小结 通过以上代码示例,我们可以看到在VC中使用XMLHTTP对象进行HTTP请求的基本流程。这种方式为C++开发者提供了一种简单有效的方法来处理网络请求,并与Web服务进行交互。需要注意的是,在实际项目中,还需要...

    VB 如何调用XP系统的图片和传真查看器 打开图片

    ### 小结 通过上述步骤,我们不仅可以理解如何使用VB调用Windows XP的图片和传真查看器,还能深入了解到VB编程、DLL调用以及Windows系统内部的一些工作机制。这种方法不仅适用于打开图片,稍作修改后也可以用于启动...

    Visual Studio 2005 制作DLL文件1

    #### 小结 通过上述步骤,我们已经成功地在Visual Studio 2005中创建了一个简单的DLL,并在另一个项目中实现了对其的引用和调用。这种方法不仅有助于代码的重用,还提高了程序的模块化程度,便于后期的维护和升级。...

    Labview应用技术 LabVIEW的CIN节点调用(教案).doc

    3. **小结**:课堂讨论和总结调用C/C++代码的关键点,比较CIN节点和DLL节点的差异,强调实践中的注意事项。 **教学方法** 结合演示、实操、讲授和讨论,使学生既能理论联系实际,又能加深对知识点的理解。通过动手...

    vc++动态链接库(dll)的开发与应用.pdf

    小结 通过本篇文章的学习,我们可以了解到DLL在VC++环境下的创建和使用方法。无论是隐式链接还是显式链接,都能有效提升软件的性能和灵活性。开发者可以根据实际需求选择合适的链接方式来优化项目结构,提高软件的...

    C#生成DLL文件的方法小结

    当程序需要调用DLL中的函数时,它不是直接调用这个函数,而是通过函数在DLL中的入口点进行调用。这样,多个程序可以共享一个DLL文件,节省内存,并提高代码的可复用性。 当DLL文件加载到内存中时,其内容可以被所有...

    com组件学习小结

    ### COM组件学习小结 #### 一、COM组件与MATLAB和VC++混合编程 COM(Component Object Model),即组件对象模型,是一种用于构建应用程序组件的技术。它允许不同语言编写的程序之间进行通信,实现跨语言、跨平台的...

    JNI技术实践小结.doc

    ### JNI技术实践小结 #### 一、背景与概述 JNI (Java Native Interface) 是一种标准的机制,允许Java程序直接调用本地方法(Native Methods),这些本地方法通常是由C或C++编写的。JNI技术在Java环境中非常有用,...

Global site tag (gtag.js) - Google Analytics