`
leongod
  • 浏览: 63725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

vs2008制作dll笔记,回带值样例

阅读更多

使用vs2008制作dll文件,生成动态链接库,采用显示加载,以下记录实现过程:

 

1.制作dll文件

  • vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:MyDll。点击【OK】,【Next】,选择dll单选按钮,完成。
  • vs2008会自动生成一些代码,不用管它。创建MyDll.h,代码如下
    MyDll.h 为了提高可用性,写了可回带值的函数供参考
    //MyDLL.h 
    extern "C" _declspec(dllexport) int Max(int a, int b); 
    extern "C" _declspec(dllexport) int Min(int a, int b); 
    extern "C" _declspec(dllexport) bool cim2scada(char* cimId, char** scadaId);
      
  • 创建MyDll.cpp
  • // MyDll.cpp : Defines the exported functions for the DLL application.
    //
    
    #include "stdafx.h"
    #include"MyDll.h" 
    #include <iostream>
    
    int Max(int a, int b) 
    { 
    	if(a>=b)return a; 
    	else 
    		return b; 
    } 
    int Min(int a, int b) 
    { 
    	if(a>=b)return b; 
    	else 
    		return a; 
    }  
    
    bool cim2scada(char* cimId, char** scadaId){
    	char *result;
    	if(cimId == NULL){
    		printf("空指针!");
    		return false;
    	}else if(strlen(cimId) == 0){
    		printf("cimId无值!");
    		return false;
    	}
    
    	if(strcmp(cimId, "aaaaaa") == 0){
    		result = "1000";
    	}else if(strcmp(cimId, "bbbbbb") == 0){
    		result = "2000";
    	}
    
    	*scadaId = result;
    	printf("fun scadaId:%s\n", *scadaId);
    	return true;
    }
     
  • 编译一下,到工程的DEBUG目录,就可以找到MyDll.dll文件

2.创建测试程序

  • vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:DllTest。点击【OK】,【Next】,选择console单选按钮,去掉“预编译头”默认勾选项,完成。
  • #include "windows.h"
    #include <iostream>
    
    void main(){
    	typedef int(*pMax)(int a, int b); 
    	typedef int(*pMin)(int a, int b); 
    	typedef bool(*pcim2scada)(char* cimid, char** scada);
    	HINSTANCE HDLL; 
    	HDLL=LoadLibrary(L"MyDll.dll");//加载动态链接库MyDll.dll文件; 
    	pMax Max=(pMax)GetProcAddress(HDLL,"Max"); 
    	pMin Min=(pMin)GetProcAddress(HDLL,"Min"); 
    	pcim2scada cim2scada=(pcim2scada)GetProcAddress(HDLL,"cim2scada"); 
    	int a = Max(5, 12); 
    	
    	char cimId[] = "aaaaaa";
    	char * scadaId = "";
    	bool b = cim2scada(cimId, &scadaId);
    
    	printf("Max结果为%d",a); 
    	printf("cimId:%s, scadaId:%s", cimId, scadaId);
    	FreeLibrary(HDLL);//卸载MyDll.dll文件; 
    }
     
  • 编译一下
  • 拷贝MyDll.dll文件到DllTest项目的Debug目录下
  • 打开一个控制台(cmd),进入DllTest > Debug目录,运行DllTest.exe
  • 输出结果:
    fun scadaId : 1000
    Max结果为12
    cimId:aaaaaa, scadaId:1000

有疑问,见附件或给我发邮件。 

1
0
分享到:
评论

相关推荐

    TSCLIB dll文件+C#使用样例类

    TSCLIB.dll 文件 用于TSC打印机打印 使用TSPL2指令集执行打印

    vs2010制作dll文件

    本教程将详细介绍如何使用Visual Studio 2010(简称VS2010)创建DLL文件,并演示如何在C程序中调用这些DLL中的函数。 首先,让我们理解DLL的基本概念。DLL是一种包含可执行代码和数据的库文件,它可以被多个进程...

    vs2008 提示 调试器dll msdbg2.dll 未正确安装

    如何你在vs调试中出现 调试器dll msdbg2.dll 未正确安装 请尝试安装此工具 来自vs2008安装包中的Remote Debugger/x86/rdbgsetup.exe

    PB制作dll VS C#制作dll ,与PB、C#dll接口互相调用

    共有PB 两部分代码,Dll制作的demo ,与调用C#dll,自身的dll的demo; C# 代码两部分,生产dll ,调用dll .

    VC dll编程和使用例子

    1. **DLL制作工程** - **创建DLL项目**:在Visual Studio 2005中,选择“新建项目”-&gt;“Win32项目”,在向导中选择“DLL”模板,确保勾选“导出符号”以便将函数暴露给其他程序。 - **定义导出函数**:在DLL的...

    制作DLL图标 图标制作软件

    制作DLL图标的过程涉及到图像设计和编程技术,下面我们将详细探讨如何制作DLL图标以及相关的知识点。 首先,我们需要了解图标的基本结构。图标文件(.ICO)是由多个尺寸和颜色深度的图像组成的,包括16x16、32x32、...

    windows标准dll封装及调用样例

    本示例“windows标准dll封装及调用样例”旨在教你如何创建和使用DLL,这对于Windows编程来说是至关重要的。 一、DLL的基本概念 DLL文件包含可执行代码和数据,它们可以被多个应用程序同时使用。当多个程序都调用同...

    大智慧365DLL插件设计样例

    在证券交易领域,大智慧365DLL插件设计样例是一个重要的参考资料,它为开发者提供了一个使用C++语言自定义交易指标的实践指南。DLL(Dynamic Link Library)是Windows操作系统中的一种共享库机制,允许程序在运行时...

    vc dll和lib编写样例

    **DLL(动态链接库)与LIB(静态链接...通过研究这些样例,你可以深入理解如何在VS2013环境下操作DLL和LIB,以及如何在实际项目中应用这些技术。对于初学者来说,这是一个很好的起点,可以加深对Windows编程的理解。**

    解决vs2008建立vc控制台应用程序时,出现“没有找到msvcr90d.dll”的错误,并且闪一下就没了的情况

    在使用Visual Studio 2008 (VS2008) 开发VC++控制台应用程序时,有时会遇到一个常见的问题:程序运行时提示“没有找到msvcr90d.dll”的错误,而且应用程序窗口会瞬间关闭,即“闪一下就没了”。这个错误通常与动态...

    关于jda调用dll的路径问题和测试样例

    在“关于jda调用dll的路径问题和测试样例”这个主题中,我们主要讨论的是如何在JDA中正确配置和使用动态链接库(DLL)文件,以及解决可能出现的路径问题。DLL文件通常包含可由多个程序共享的代码和数据,因此在Java...

    在Qt中调用vs2008生成的dll以及lib的方法

    2. 在VS2008环境下调用DLL和LIB: - 创建新的工程,添加.cpp文件,并在其中编写调用DLL中函数的代码。 - 使用pragma comment(lib,"mydlltest.lib")指导链接器找到LIB文件。 - 使用extern"C" declspec(dllimport)...

    SkinCrafter3_vs2008.dll下载 找不到SkinCrafter3_vs2008.dll DLL文件丢失.zip

    dll控件常规安装方法(仅供参考): 一、如果在运行某软件或编译程序时提示缺少、找不到dll等类似提示,您可将下载来的dll拷贝到指定目录即可(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用...

    用VC++制作DLL教程

    【VC++制作DLL教程】 创建DLL(动态链接库)在软件开发中是非常常见的技术,它允许将一组功能封装在一个库中,供多个应用程序共享。在VC++环境下,我们可以选择两种方式来创建DLL:基于API的传统DLL和基于MFC的对象...

    VS2015 C++ dll动态库的制作以及调用

    VS2015 C++ dll动态库的制作以及调用的资源文件,一个文件为动态库的制作,一个文件为调用的

    利用DLL存储和调用图片,代码样例.rar

    标题中的“利用DLL存储和调用图片”是一个关于软件开发的话题,主要涉及到动态链接库(Dynamic Link Library, DLL)的应用,以及如何在DLL中处理图像数据。DLL是一种可重用的代码库,允许多个程序共享同一段代码,...

    DLL笔记PART1

    DLL笔记.part1

    DLL笔记.part2

    DLL笔记.part2

    DLL图标文件制作工具IconJack32---提取EXE图标制作DLL工具

    DLL图标文件制作工具IconJack32---提取EXE图标制作DLL工具

Global site tag (gtag.js) - Google Analytics