C++学习之简单dll制作和预编译头

来源:互联网 发布:vv5的碰撞数据 编辑:程序博客网 时间:2024/05/08 22:09
头文件保护
#ifndef HEAD_H#define HEAD_H//头文件内容#endif

在有些代码中我们可以看到这样的代码

#ifdef DEBUG//...#endif
如果程序定义了预编译器DEBUG名字,程序将执行中间部分的代码


在编译C++程序时,编译器自动定义了一个预处理器名字__cplusplus(两个下划线).因此我们可以根据它来判断是否为C++程序,以便有条件的包含一些代码

#ifdef __cplusplus//不错,我们要编译C++extern "C"#endif

在编译标准C时,编译器将自动定义名字__STDC__。当让__cplusplus与__STDC__不会同事被定义
另外两个比较有用的预定义名字是:__LINE__和__FILE__。__LINE__记录文件已经被编译的函数, __FILE__包含正在被编译的文件的名字
可以这样使用它们

if (element_count == 0)cerr << Error:" << __FILE__<<":line" << __LINE__<< "element_count must be non-zero.\n";
另外两个预定义名字分别包含被当前编译文件的事件和日期(__TIME__)和日期(__DATE__)。时间格式为hh:mm:ss,如果这一天时间为1996年10月31号
则日期表示为Oct 31 1996

DLL生成,在vs2010中选择控制台程序选择生成Dll文件

头文件中可以定义函数

extern "C" bool __declspec(dllexport) Run();

在cpp文件中实现Run()函数

可以再def文件中这么写

LIBRARY dll文件名

EXPORTS

RUN @ 1

这样方便引用

例如在C#中引用此dll文件

首先添加名字空间

using System.Runtime.InteropServices;[DllImport("Tpci102Dll.dll", CallingConvention = CallingConvention.StdCall)]public static extern bool Run();




0 0
原创粉丝点击