vc dll的生成和使用

这两天做了打印机的上位机驱动,要生成DLL,了解了这方面的东东,记录下简单。

因为要在wince平台上使用,接口不能用MFC类,所以费劲的转换成了非MFC,也就使用Non-MFC Dlls

DLL的生成:

*.h

#ifndef __PRINTERCONTROL_H__
#define __PRINTERCONTROL_H__

int __declspec(dllexport)PrintDC(void *p);

#endif

  因为要静态调用需要*.lib 所以还要生成.def文件,直接创建即可,编译OK

DLL的使用:

可以在头文件里面加入#pragma comment(lib,"PrinterControl.lib")

也可以在配置属性里面设置的;

extern C,要使用,必须在生成DLL的源文件和头文件里添加,才能在使用的工程里使用

再顺便贴个 只根据HDC得到其里位图信息的源码,自己找了好长时间,无意中想到的笨方法:

	HBITMAP	hBmp;
	HBITMAP	hOld;
	BITMAP bm;
	hBmp = CreateCompatibleBitmap(hDC, 0, 0);
	hOld  = (HBITMAP)SelectObject(hDC, hBmp);
	SelectObject(hDC, hOld);
	::DeleteObject(hBmp);
	::GetObject(hOld, sizeof(bm), &bm);

之前自己使用的HDC是转CDC处理得到位图信息:

	CDC *pdc = CDC::FromHandle(*(HDC *)p);
	CBitmap  *pBitmap;

	CBitmap  *pBitmap;
	BITMAP bm;

	if((pBitmap = pdc->GetCurrentBitmap()) == NULL)
	{
		return 0;
	}
	pBitmap->GetBitmap(&bm);

  这痛苦的日子啊,VC三年前都放下了,是不想再拾起来了,痛苦的API

vc dll的生成和使用,布布扣,bubuko.com

时间: 2024-09-30 18:33:06

vc dll的生成和使用的相关文章

VC++ DLL 发布到生产环境过程

最近项目中用到了VC++ DLL,在本机调试时无任何问题,但是发布出来后,COPY到另外的机器就报错,说找不到DLL,由于自身工作接触这方面比较少,经过一番折腾后,终于解决,以下为解决步骤 一,平台工具集(最终没选这个发布后也可以运行,选的VS 2015(V140),但是C++相关的工具是必须要装的),就选了Visual Studio 2015 - Windows XP (v140_xp),如图 接下来生成项目报错,C:\Program Files (x86)\MSBuild\Microsoft

c# 使用ZXing.dll库生成二维码

最近工作中有需要一个需求,就是把一个服务地址生成二维码,可以用来扫码分享,网上找了下方法也比较多,我这里po一下调用ZXing.dll库生成二维码的方法吧.先简单介绍一下 ZXing库,ZXing库是一个开源Java类库,可用于生成和解析多种格式的1D/2D条形码:zxing遵循Apache License 2.0,只是工具而已,是不收费哒. ZXing库的下载地址:http://zxingnet.codeplex.com/ 点击下载,下载后解压压缩包: 把Zxing加到工程应用中,以下为核心代

VB调用VC dll的返回方式

第一种类型:数值传递 注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中,int类型的变量是32位的,在VB中要用long型变量来配合.VC++部分: [cpp] view plaincopy extern "C" _declspec(dllexport) int __stdcall TestCalc(int source) { //AFX_MANAGE_STATE(AfxGetStaticModuleState()); return(++

Sandcastle是微软提供的一个根据XML注释和DLL文件生成帮助文件的工具

Sandcastle是微软提供的一个根据XML注释和DLL文件生成帮助文件的工具,目前是在CodePlex上的一个开源项目,可以去这里下载:Sandcatle 项目Sandcastle 本身是一个console的程序,为了方便使用,我们可以使用他的GUI版本:Sandcastle Help File Builder. 第一步,为你写的代码添加XML注释 我们创建一个简单的ClassLibrary1项目最为示范: using System; using System.Collections.Gen

VC++6.0生成DLL

一.生成DLL文件 1.菜单项“文件”——>“新建”——>“工程”——>“Win32 Dynamic-Link Library”.创建一个工程项目,为这个工程取个名字为“test”.在这里我选择“创建一个简单的DLL”,此时在VC++界面上会有一个树形文件结构. 2.看到这个文件结构就大概明白,Source Files是放源码的,也就是以.cpp为后缀的文件:Header Files就是以放头文件,也就是以.h为后缀的文件.这个StdAfx.h和StdAfx.cpp都是自动生成的,这个S

VC DLL 动态链接库(一)

首先我们来说说静态链接库 静态数据库是指 lib 单独使用, 在编译时直接加入程序当中, 包含函数本身, 不仅包含头文件,还有源码, 称为静态链接库static link library.链接生成的程序可以独立运行. 即lib文件是静态编译出来的,索引和实现都在其中. 缺点是任何改动,都需要重新编译.链接,这个对大型的程序非常不便,升级也麻烦.有时,在更改数据结构时,需要重新编译整个工程,而非只编译.链接单个lib. 实现方法: 在 VC new 一个名称为 libTest 的 static l

Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤

资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在资源文件中的名称->类型->实际文件名称. 例如:要将文件名 demo.Dll的文件打包成一个资源文件,首先 新建一个文本文档,输入内容 mydemoDll RCDATA demo.DLL mydemoDll 和 RCDATA 你可以随便写,这个是为了在使用资源时定义的名称和类型你也可以写成:a

C++ Builder使用VC DLL

好久没用BCB了,真的有些陌生了,当然个烂笔头吧. 1 先 implib c:\xxx.lib c:\xxx.dll 生成lib文件 2 #pragma comment(lib,"xxx.lib") 3 extern "C" __declspec(dllimport) __stdcall int AFunc(int *a); 4 直接调用 AFunc 即可.

VS2008 工程只生成dll不生成lib的解决方案

http://topic.csdn.net/u/20081216/22/b12d1450-7585-4c9f-867a-7c181737c328.html 问题:vs2008版本的,不知道为什么只生成dll,不生成lib文件了. 解决方案: 在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字 -> 添加现在编译就可生成.lib 文件了,然后把添加的文件删除,以后都没问题了.如果上边的操作是添加现有项,不能产生