VC调用DLL

调用DLL有两种方法:静态调用和动态调用.

(一).静态调用其步骤如下:

1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;

2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;

3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目

录下;

4.打开你的目标工程选中工程,选择Visual C++的Project主菜单的Settings菜单;

5.执行第4步后,VC将会弹出一个对话框,在对话框的多页显示控件中选择Link页。然

后在Object/library modules输入框中输入:youApp.lib

6.选择你的目标工程Head Files加入:youApp.h文件;

7.最后在你目标工程(*.cpp,需要调用DLL中的函数)中包含你的:#include "youApp.h"

注:youApp是你DLL的工程名。

2.动态调用其程序如下:

动态调用时只需做静态调用步骤1.

{

HINSTANCE hDllInst = LoadLibrary("youApp.DLL");

if(hDllInst)

{

typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);

MYFUNC youFuntionNameAlias = NULL; // youFuntionNameAlias 函数别名

youFuntionNameAlias = (MYFUNC)GetProcAddress

(hDllInst,"youFuntionName");

// youFuntionName 在DLL中声明的函数名

if(youFuntionNameAlias)

{

youFuntionNameAlias(param1,param2);

}

FreeLibrary(hDllInst);

}

}

显式(静态)调用:

LIB + DLL + .H,注意.H中dllexport改为dllimport

隐式(动态)调用:

DLL + 函数原型声明,先LoadLibrary,再GetProcAddress(即找到DLL中函数的地址),不用后FreeLibrary

时间: 2024-09-17 13:44:54

VC调用DLL的相关文章

回调函数 dll-VC调用dll里面的回调函数

问题描述 VC调用dll里面的回调函数 我调用一个dll里面的回调函数,原型说明如下,请问怎么调用?感觉原型有问题,和我看的资料不一样 void (WINAPI SetCallback)(long caller,long userdata); 设置回调,回调函数将接收终端传过来的数据和消息 回调函数的参数为 Void CALLBACK eipcalback(int cmdtype,char *ip,char *rectime,char *lpn,char *imgfile,BYTE *imgda

struts2 0+dll-java web项目调用 vc++的dll文件

问题描述 java web项目调用 vc++的dll文件 我用java 的jni调用vc++写好的dll动态链接库,使用main方法测试没有问题,但是放在web项目的Action中调用就不执行,在static{ System.put.println("load dll..."); System.loadlobrary("ukeyjni"); system.out.println("end load..."); } 上面的调用前后都能打印,在调用的

vc++-VC++、DLL、虚函数、调用约定

问题描述 VC++.DLL.虚函数.调用约定 关于"VC++.DLL.虚函数.调用约定"的一个问题折腾我很久了,希望CSDN的朋友可以助我解决问题. DLL里,接口类的虚函数(非纯虚函数),应该怎样调用约定? 背景描述:一个DLL工程A(接口),有个接口类AI,里面全是纯虚函数.一个EXE工程B(平台),有个成员变量mc类型是类AI.一个DLL工程C(游戏),有个类是类AI的子类,即实现类,对类AI的所有接口(纯虚函数)进行了实现. 原理是:平台只有一个在跑,而游戏是N个,工程B(平台

VC++动态链接库(DLL)非MFC DLL介绍

  4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数. 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单击此处下载本工程附件).注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是第5.6节要讲述的MFC 动态链接库. 图6 建立一个非MFC DLL 在建立的工程中添加lib.h及lib.cpp文件,源

dll生成-VC++生成DLL文件,产生的函数前面带下划线 后面带@符号,请问这个怎么解决?

问题描述 VC++生成DLL文件,产生的函数前面带下划线 后面带@符号,请问这个怎么解决? 如题 函数名应该是 Java_GoodLuck_get 但是结果却是这样 _Java_GoodLuck_get@8. 这样我不能用Java调用这个DLL里面的函数啊.大神求助. 解决方案 LZ可以参考这篇文章:http://blog.csdn.net/codehat/article/details/4439465 应该是你没有指定导出符号,所以就会默认生成符号,默认生成的符号里面就有些特殊字符. 解决方案

VC++的DLL应用(含Demo演示)

在大学大一的时候学的是C,然后后来大二的时候专业又开了C++这个课程,然后再后来自己又自学了一点VC++,大三的时候也试着编写过一个MFC的最简单的窗口程序.到大四的时候,自己又做了一个GIS的项目,是用C#.NET来编写的,然后发现C#上手好容易,而且还大部分语法规则都沿用了C,C++的习惯,于是觉得C++实在是没有一点优势可言啊.但这个暑假的实习经历又改变了我的观点:C++在写窗口程序虽然麻烦,但是却什么能做,而且对比C#来说,对运行环境的要求不高,不用像C#程序在安装之前还要安装100M多

vc调用webservice

问题描述 在http://tech.163.com/06/0428/09/2FPMSA1L00091LRC.html里面是讲vc调用webservice的例子但是我照样子做了总是有错错误是:test2.cpp(4):errorC2006:"#using":应输入文件名,却找到"newline"test2.cpp(4):fatalerrorC1192:在""上#using失败请问这是怎么回事啊?#include"stdafx.h"

关于C#调用DLL和C线程回调C#代码问题,大家探讨下。。。。

问题描述 我使用VC创建了一个DLL文件,这个DLL文件唯一特殊地方是它创建一个线程,该线程可以回调C#代码?问题出现在回调几次后C#程序出错挂掉.VC程序如下:Test.DLLtypedefint(*InputFunction)();typedefint(*OutputFunction)();//全局变量InputFunctionSpexInputFunction=NULL;OutputFunctionSpexOutputFunction=NULL;intIsStop=0;HANDLEspex

在ASP文件中调用DLL

在ASP文件中调用DLL 动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法,但有一点恐怕大部分人都不知道,那就是在ASP文件也能通过调用DLL来加快服务器的执行速度,下面我简单的介绍一下在ASP文件调用DLL的步骤. 首先,必须得有DLL文件,本例是通过VB5.0创建ActiveX DLL文件,这个文件模拟了一个掷色子的过程. 在VB5.0的环境下,新建一个工程,并双击新建工程窗口中ActiveX DLL图标,VB将自动为项目添加一个类模块,并将该项目类型设置为ActiveX DL