【转】用VC6.0创建和调用win32 dll

基于Visual C++6.0的DLL编程实现 基于Visual C++6.0的DLL编程实现2003-3-28 12:44:42   YESKY   刘涛   阅读次数: 14498 一、前言  自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DL 阅读详情

一、生成DLL

1、用VC建立一个Win32DLL工程--DllTest,选上“导出符号”;

2、在DllTest.cpp中编写导出函数Fun(),这个函数是别的程序要调用的函数:

   1:
 #include
 "DllTest.h"
 
   2:
 int
 fun(int
 i) 
   3:
 { 
   4:
     return
 i*i; 
   5:
 } 

3、在DllTest.h中声明导出这个函数:

   1:
 extern
 "C"
 __declspec(dllexport) int
 fun(int
 i); 

4、第三步也可以用DEF文件来指定要导出的函数,这样做可以在程序运行过程中显式的加载DLL。关于在 程序运行过程中显式的加载DLL见

二、调用DLL。 添加一个DEF文件到工程,写入如下内容:

   1:
 EXPORTS 
   2:
 Fun 

5、编译这个工程,生成DllTest.dll,同时也生成了DllTest.lib文件。这个文件是供程序开发用的导入 库。

三、调用DLL 调用DLL有两种方法:

装载期间动态链接--模块可以向调用本地函数一样调用从其他模块导出的函数。装载期间链接必须使用 DLL的导入库,也就是.lib文件。它为系统提供了加载这个DLL和定位DLL中的导出函数所需要的信息。

运行期间动态链接--程序运行期间可以使用LoadLibrary加载这个DLL,然后调用GetProcAddress函数取得 DLL导出函数的地址,然后通过函数地址调用DLL中的函数。

1、装载期间动态链接。 新建一个Win32 Console Application工程--DllApp。把刚才建立的那个工程中的DllTest.dll、 DllTest.h和DllTest.lib拷贝到DllApp目录下。在DllApp.cpp文件中写入:

   1:
 #include
 
   2:
 #include
 
   3:
 #include
 "DllTest.h"
 //要链接到的DllTest.lib库 
   4:
 #pragma
 comment(lib,"DllTest.lib"
) 
   5:
  
   6:
 void
 main() 
   7:
 { 
   8:
     int
 a = Fun(2); 
   9:
     printf("The result is %d/n"
,a); 
  10:
 }

2、运行期间动态加载 新建一个Win32 Console Application工程--DllApp2。把建立的DllTest.dll拷贝到DllApp2目录中--一定 要用在生成DLL部分按照第四步产生的DLL文件,否则程序无法运行。在DllApp2.cpp中写入:

   1:
 #include
 
   2:
 #include
 
   3:
 typedef
 void
 (*PFUN)(int
);//声明函数原型 
   4:
 void
 main() 
   5:
 { 
   6:
     HMODULE hModule = ::LoadLibrary("DllTest.dll"
);//加载DLL库 PFUN 
   7:
     newfun = (PFUN)::GetProcAddress(hModule,"fun"
);//取得fun函数的地址 
   8:
     int
 i = newfun(2); 
   9:
     printf("The result is %d"
,i); 
  10:
     ::FreeLibrary(hModule); 
  11:
 } 

注意:由于缩进排版太麻烦,这个程序没有加入错误处理(比如装载DLL失败等),在你的程序上应该加 上这种处理。

VS2015项目中,MFC内存中调用DLL函数(VC6生成的示例DLL) 本例主要讲一下,用VC6如何生成DLL,用工具WinHex取得DLL全部内容,VC2015项目加载内存中的DLL函数,并调用函数的示例。 阅读详情

相关推荐

用VC6.0打造硬件信息获取DLL程序

动态链接库(Dynamic Link Library,简称DLL)是一种实现代码共享和模块化编程的机制。在Windows操作系统中,DLL通过提供共享代码和资源来减小程序体积,提高内存利用率,并且使得应用程序能够支持多语言和扩展新功能而无需重新编译整个程序。硬盘序列号(也称为硬盘的 Serial Number 或 S/N)是制造商在生产硬盘时刻录的唯一标识符。它通常被用来跟踪硬盘的历史、库存和保修状态。对于用户来说,硬盘序列号可用于网络管理、资产管理以及进行故障排查时快速定位特定硬盘。

weixin_35019679的博客 1055

VC 6.0调试 之 DLL调试

你写的DLL或者ActiveX需要调试,因为他们不能直接运行 ,所以不能够直接调试,那么可以试试下面的方法:1. 在Vc 6.0中新建一个Win32 Console Application工程(例如DLLTest),代码中调用需要调试的DLL,编译该工程,生成Debug/DLLTest.exe,关闭该工程。2. 打开VC 6.0,打开需要调试的DLL工程,点击菜单Build->Set Active

FreeWave's space 6357

VC6.0中,创建、调用 dll

NULL 博文链接:https://gauzeehom.iteye.com/blog/1031130

VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序)

VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序) Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。 VC6.0 确实有点老了,如果不是学校要求或者项目需要,建议使用 Visual Studio 代替,这里之所以讲解 VC6.0,是为了照

ccc369639963的博客 3万+

DSP28335新手避坑指南:手把手教你用CCS6.2生成10KHz SPWM(附完整工程)

本文详细介绍了如何使用DSP28335开发板和CCS6.2环境生成10KHz SPWM波形的完整工程指南。从开发环境配置、ePWM模块设置到SPWM算法实现,特别针对新手常见问题提供了解决方案和调试技巧,帮助工程师快速掌握DSP28335的SPWM生成技术。

weixin_42522374的博客 182

RSA 2048/4096 签名校验算法

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能...

qq_38769551的博客 9500

vs2010 创建dll 及调用

1.使用 VC6.0 生成 DLL 新建项目 “Win32 Dynamic-Link Library”,输入项目名称如:object,确定后选择 “A simple DLL project” 点击“完成”。  以下为cpp文件自动生成的代码: #include "stdafx.h" BOOL APIENTRY DllMain( HANDLE hModule,

liulina603的专栏 1万+

奈曼-皮尔逊准则

奈曼-皮尔逊准则 如果各个假设的先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(i=0,1)已知,并且每种判决的代价函数已知,这时,可以用贝叶斯准则进行判决。 如果进一步假设正确判决不付出的代价,而错误判决代价相同,即c00=c11=0,c01=c10=1c_{00}=c_{11}=0,c_{01}=c_{10}=1c00​=c11​=0,c01​=c10​=1,这时可以用最小平均错误概率准则进行判决。 在不知道先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(

little_soldier的专栏 1万+

C#与VC相互调用之C#调用VC的DLL

介绍 每种语言都有其优势和特点,复杂的项目一般需要2种及以上的语言,这样才能发挥每种语言的优势。这里就介绍一下C#如何调用VC的DLL 项目创建 打开VS2010,因为设计到两个程序,这里先创建一个空的解决方案: 然后再来创建一个VC的DLL项目: 选择Win32项目模板: 选择应用程序的类型为DLL: 这里不用勾选“导出符号”,稍后自己来写导出就行。点击完成后生成如下文件: dllma...

xinxin_2011的博客 4523

Git GUI学习教程

学习宗旨:快速应用,不易忘记 很遗憾,申请Git的专栏未审批,那我就不再写专栏了,把最近的学习心得写一下,我也是在学习中进行,有任何问题直接留言,回复交流,我还采用思路+实践模式快速过。 目录 1、Git是什么 2、远程仓库 1)GitHub: 2)Gitee(码云): 3、安装Git(Windows) 1)下载 ...

Alexantao 的专栏 7253

SQLSTATE58030

在优化一条SQL的时候遇到了执行错误 gtlions =# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1 gtlions -# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 a

Gtlions Tracker 3660

VC6.0如何创建一个基本的Win32 DLL工程

第一步: 使用VC6.0工程向导 Win32 Dynamic-Link Library 创建Win32s1工程,并在向导第一步选择 An empty DLL project第二步: 在FileView中分别创建 dll1.h和dll1.cpp①、在dll1.h中定义#ifndef _DLL_BASICUI_H_#define _DLL_BASICUI_H_   //告诉编译器只

PerfectToday的专栏 4550

OpenCV教程:超详细的OpenCV入门教程,值得收藏

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。 OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。 OpenCV 是跨平台的,可以在Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。 OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、..

pythonandaiot的博客 14万+

VC6.0创建与调用dll

(1)新建 “Win32 Dynamic-Link Library”工程,选择

ImYancey的专栏 815

在 FlexSim 中建 AGV 小车模型时,如果设定“每次充电需要 2 小时才能充满”,应该如何配置 AGV 的充电功能?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 881

AI应用质量工程实践:从评估到监控的完整体系构建

在软件工程领域,质量保障体系是确保产品稳定可靠的核心机制,涉及度量指标、保障流程和工具链的完整闭环。随着生成式AI应用的快速发展,如何将传统软件工程中的质量门禁思想引入AI领域,成为工程实践的关键挑战。其核心原理在于构建可量化、可监控、可改进的质量评估框架,通过自动化测试、持续监控和反馈优化来管理AI输出的不确定性。这一技术价值在于将AI应用从原型阶段推向产品化,确保输出的一致性、安全性和可靠性。在实际应用场景中,开发者需要从功能性、非功能性、一致性和合规性四个维度构建评估体系,并借助LLM-as-a-Ju

weixin_28728279的博客 294

关于VC和GCC中调用C DLL的一些问题

原文地址:https://blog.csdn.net/funkri/article/details/8550290 关于VC和GCC中调用C DLL的一些问题 最近在罗云彬的琢石成器上看到DLL部分,产生了让GCC和VC互相调用对方产生的DLL的想法。由于C++的函数名改编问题,其dll不具有二进制级别的共享性,也就是说VC和GCC的C++ dll不能混用,但C的可以。我试验了一下,使用VC和GCC分别生成了一个简单的DLL然后由对方调用,结果可以成功,另外还顺带完成了一个DLL导出lib和a的脚本..

开心果壳 738

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC6.0学习(四)MFC调用Java

操作环境为win10,VC6.0,JDK1.8.0_191(x86)。 因为项目需要,在网上查看了很多相关文章,都没能复现,反而是将多篇文章相结合才成功了,可以说过程相当熬人,弄了两三天差点放弃。接下来说说整个调用过程。主要参考这篇文章《从 C/C++ 程序调用 Java 代码》,当然前面还说了借鉴了其他很多文章,但是记不清是哪些了,都大同小异,有兴趣可以去网上进行相关搜索。 C++调用JAVA主...

Tasteshrimp的博客 1684

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC编写DLL几种方法的简介

VC编写DLL几种方法的简介

ffghggf的博客 4064

C#调用VC++6.0(MFC)的DLL

一、VC++6.0(MFC)生产DLL 创建工程:新建WIN32 Dynamic-link Library工程bai,工程名为MyDll,选择A simple DLL project类型 在StdAfx.h中添加: extern "C" __declspec(dllexport) int fun(int a, int b); 在MyDll.cpp中添加: int fun(int a,int b) { return a+b+5; } 编译即可生产DLL文件 二、C#调用VC++6.0的

weixin_39710042的博客 811

vc 6.0之DLL的调试

你写的DLL或者ActiveX需要调试,因为他们不能直接运行 ,所以不能够直接调试,那么可以试试下面的方法: 1. 在Vc 6.0中新建一个Win32 Console Application工程(例如DLLTest),代码中调用需要调试的DLL,编译该工程,生成Debug/DLLTest.exe,关闭该工程。 2. 打开VC 6.0,打开需要调试的DLL工程,点击菜单Build->Set Ac

bobopeng 1222

Windows下用VC6.0编译Lua源码 生成静态库和动态链接库

1、 下载Lua源代码 到 http://www.lua.org/download.html 官网下载,我下载的是 lua-5.3.0 版本,解压源码包,得到 src 文件夹,这例有我们下面编译需要的文件 也可以到我的百度网盘下载用VC6构建好的工程 http://pan.baidu.com/s/1hMHm2 当然也需要个编译器,这里我用的是Microsoft Visual C++

Totohack的专栏 2800

vc6.0创建与调用dll

调用 DLL 1.使用 VC6.0 生成 DLL 新建项目 “Win32 Dynamic-Link Library”,输入项目名称如:object,确定后选择 “A simple DLL project” 点击“完成”。  以下为cpp文件自动生成的代码: #include "stdafx.h" BOOL APIENTRY DllMain( HANDLE hMod

bmjhappy的专栏 1595

C# VC6调用VC6的动态库DLL

C# VC6调用VC6的动态库DLL 一 VC创建动态库 1. DLL的创建 启动VC6.0, 新建一个“Win32 Dynamic-Link Library”工程,选择“A simple dll project”的工程名称为Vc6MakeDll 2.  打开vc_dll.cpp,在其末尾添加如下代码:  动态链接库导出的一般有两种调用协议,_stdcall和_cdecl

linfei2707的专栏 1406

VC编写DLL

1.用VC建立一个WIN32 DLL我们利用VC编写DLL有几种方法.如果用VC建立一个WIN32 DLL 工程.那这个工程就应该只导出C++的类或全局变量.和全局函数.方法就是在CPP文件中编写你的代码,为每个需要导出的元素进行导出办法是增加如下语句:_declspec(dllexport)你当然可以把它定义成宏例如,如果是一个类STUDENT需要导出, 那么声明时应该是这样写

把握自己。 1696
上一篇: C++ Primer Plus -- 第14章 笔记
下一篇: 如何编写DLL文件(开发环境VS2005)
cometdlut
博客等级 码龄19年 11粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值