VS2015 C#生成32/64位DLL文件步骤详解

3 下载量 37 浏览量 更新于2024-08-29 收藏 268KB PDF 举报
在VS2015中生成32位和64位的C# DLL文件是软件开发中常见的任务,本文将详细介绍如何通过Visual Studio 2015进行这个过程。首先,我们需要新建一个项目,选择模板中的Windows > 类库(Class Library),这是创建DLL文件的基本类型。 在创建的类库项目中,使用C#编程语言。例如,我们有一个名为`ClassLibrary2`的命名空间,其中包含一个名为`Class1`的公共类,该类有一个私有变量`_age`和对应的getter和setter方法,用于访问和设置年龄属性。这展示了基础的类定义,可以根据实际需求扩展或修改代码。 生成DLL文件的具体步骤如下: 1. **新建项目**:打开Visual Studio 2015,选择“文件”>“新建”>“项目”,在模板中选择“类库”(Class Library)。 2. **代码编写**:在类库项目中,使用`using`语句导入必要的系统库,如`System`, `System.Collections.Generic`, `System.Linq`, `System.Text`, 和 `System.Threading.Tasks`,以便能够编写和编译C#代码。 3. **编辑类**:根据项目需求创建或修改类,如上面所示的`Class1`类。确保类具有公共接口,这样其他程序才能引用和调用它。 4. **配置DLL生成**:在项目的属性窗口(右键点击项目名称,选择“属性”),找到“构建”选项卡。在“配置类型”下拉菜单中,将默认的“Win32”更改为“DLL”以生成32位DLL。对于64位,需要在“解决方案平台”部分新增一个“x64”配置,并确保“Active solution platform”设置为“x64”。 5. **解决链接错误**:在编译过程中,可能会遇到链接错误,如`LNK2001`和`LNK2019`。这通常表示缺少依赖的库。在“链接器”>“输入”中,添加缺失的静态库,比如`ws2_32.lib`和`winmm.lib`。此外,如果出现`Error D8016`错误,这可能是因为混淆符号的问题,可以在“调试”>“C/C++”>“代码生成”中,将“Program Database”设置为`/Zi`来解决。 6. **生成并测试**:完成上述步骤后,可以通过点击“构建”菜单中的“生成解决方案”来生成DLL文件。生成的文件会出现在指定的目录下,通常是`bin`目录下的`Debug`或`Release`子目录,具体取决于你选择的配置。 总结来说,生成C# DLL文件在VS2015中涉及创建项目、编写代码、配置编译设置以及处理可能出现的链接问题。理解这些步骤并根据实际项目需求调整,可以确保成功地创建可重用的DLL组件。如果你需要将ASP.NET类转换为DLL或者使用Python调用C# DLL,这些链接中的文章也会提供相应的指导。
2019-08-28 上传
使用VS2015编译和调用动态链接库dll 1. 首先建工程,选择dll,记得勾上“导出符号” 后面不用自己搞那些宏定义会省事很多。 建立工程myDll,记得勾上“导出符号” 类型选择dll 2. IDE自动生成的代码已经把整个架构弄好了,其中和项目同名的.h和.cpp文件就是我们自己写代码的地方了。我想写的dll是导出一个类,在这里我就直接在它自动生成的CmyDll类上面改了。 myDll.h myDll.cpp 在mydll.h和mydll.cpp中给类添加成员函数 //mydll.h class MYDLL_API CmyDll { public: CmyDll(void); // TODO: 在此添加您的方法。 int myFunction(int a, int b); }; //mydll.cpp int CmyDll::myFunction(int a, int b) { return a*b; } 3.编译的时候我选择了release,这里可以用默认的debug也行 在mydll.h和mydll.cpp中给类添加成员函数 最后生成解决方案后产生的mydll.lib和mydll.dll就是我们需要的二进制文件了。lib文件是编译是要用的,而dll是调用这个库的程序运行时需要的。 调用dll 1.重新建立一个工程 这回选择普通的控制台程序就行了。我建了个名为myDllCall的工程。 2.把库的头文件include进来,以及连接lib文件 其中 include进来的 myDll.h 和 **#pragma comment()**的lib根据自己的路径写。 #include "stdafx.h" #include "../../myDll/myDll/myDll.h" //头文件 #pragma comment(lib,"../../myDll/Release/myDll.lib") //调用自己写的外部库 #include int main() { CmyDll mydll; int a, b; std::cin >> a >> b; std::cout << mydll.myFunction(a, b) <> a >> b; std::cout << mydll.myFunction(a, b) << std::endl; return 0; } 3.dll放到可执行文件同一目录下面 刚刚的代码直接编译没问题,运行会报错. 直接编译没问题,运行会报错 原因是dll要和生成的可执行文件在同一个目录下,我把mydll.dll放进去之后就解决了。 我们成功的在自己的工程里调用了外部的类 可以看到我们成功的在自己的工程里调用了外部的类。