动态链接库怎么写

1.如何编写动态链接库程序打开Visual Studio 20102新建项目:文件》新建》项目选择Visual c++》Win32 项目》输入项目名称 , 选择保存目录 , 单击“确定”按钮进入Win32应用程序向导 , 单击“下一步”按钮应用程序类型选择DLL , 附加选项选择空项目 , 单击“完成”按钮添加新类头文件:在项目的头文件目录上单击鼠标右键》添加》新建项已安装的模板选择Visual C++》头文件》输入文件名称 , 单击“添加”按钮添加新类源文件:在项目的源文件目录上单击鼠标右键》添加》新建项已安装的模板选择Visual C++》c++文件》输入文件名称 , 单击“添加”按钮为新类添加内容 。
内容如下:头文件simpleDLL.h:源文件simpleDLL.cpp:生成解决方案 , OK , 下一篇讲如何用VS2010编写动态链接库DLL的单元测试用例 , 调用DLL测试正确性 。
2.【急】vc怎么写动态链接库extern "C" _declspec(dllexport) int Max(int a, int b);
extern "C" _declspec(dllexport) int Min(int a, int b);
int Max(int a, int b)
{
if(a>=b) return a;
else return b;
}
int Min(int a, int b)
{
printf("Min is called\n\n");
if (a >= b) return b;
else return a;
}
//开始两句是函数声明
//后面是函数调用
1. 打开VC++ 新建工程 "Win32 Dynamic-Link Library"
2. 新建CPP文件  ,  把以上内容复制到文件中
3. 编译 , 可看到生成的 DLL 文件了
3.动态链接库里面都是什么啊动态链接库英文为DLL , 是Dynamic Link Library 的缩写形式 , DLL 是一个包含可由多个程序同时使用的代码和数据的库 , DLL不是可执行文件 。
动态链接提供了一种方法 , 使进程可以调用不属于其可执行代码的函数 。函数的可执行代码位于一个 DLL 中 , 该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数 。
DLL 还有助于共享数据和资源 。多个应用程序可同时访问内存中单个DLL 副本的内容 。
DLL 是一个包含可由多个程序同时使用的代码和数据的库 。
4.vb 如何编写动态链接库可以作成active X控件.可视的 。
如同标准的按钮控件那样 。
封装好属性、方法、函数等 。用起来会更方便 。
如果你的串口通信用的是mscom控件的话 , 最好你也封装成可视的active X 控件 。
如果你封装后的效果只要几个函数的话 , 可以封装为DLL的 。
新建工程里有选项 , 选 ActiveX
之类的 , 你可以试试 。
另外代码和你原来的基本一样 。
如果你实现串口通信的程序代码在一个类模块或者modle模块的话 , 基本不用怎么动 。
最后可以编译为ocx的可视控件或者DLL , 看你开始建的工程选的是哪个了
5.想问一下这个动态库接口怎么写第一步 , 我先从简单的调用出发 , 定义了一个简单的函数 , 该函数仅仅实现一个整数加法求和: LIBEXPORT_API int mySum(int a,int b){ return a+b;} C# 导入定义: public class RefComm { [DllImport("LibEncrypt.dll", EntryPoint=" mySum ", CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)] public static extern int mySum (int a,int b); } 在C#中调用测试: int iSum = RefComm.mySum( , ); 运行查看结果iSum为5 , 调用正确 。
第一步试验完成 , 说明在C#中能够调用自定义的动态链接库函数 。第二步 , 我定义了字符串操作的函数(简单起见 , 还是采用前面的函数名) , 返回结果为字符串: LIBEXPORT_API char *mySum(char *a,char *b){sprintf(b,"%s",a); return a;} C# 导入定义: public class RefComm { [DllImport("LibEncrypt.dll", EntryPoint=" mySum ", CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)] public static extern string mySum (string a, string b); } 在C#中调用测试: string strDest=""; string strTmp= RefComm.mySum("45", strDest); 运行查看结果 strTmp 为"45" , 但是strDest为空 。