c#生成动态库并加载

下面这段代码生成dll文件,不能编译运行。点击项目右键,点击生成,这时会在debuge文件中生成相应的配置文件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;

namespace AccessDll
{
    public class Class1
    {
        public void show_Data(DataGridView dGV_Data, Button btn_show_Click)
        {
            OleDbConnection strConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myTable.accdb;Persist Security Info=False;");
            // 建立数据库引擎链接
            OleDbDataAdapter mydata = new OleDbDataAdapter("select * from myTable", strConnection);
            // 建立适配器
            DataSet myds = new DataSet();
            // 填充数据表
            mydata.Fill(myds, "datatable");
            //用控件显示
            dGV_Data.DataSource = myds.Tables["datatable"];
        }
    }
}

  上面的程序生成配置文件

下面的程序调用该配置文件,在引用中添加上面生成的配置文件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AccessDll;

namespace MyAccess
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void btn_Click_Click(object sender, EventArgs e)
        {
            AccessDll.Class1 mydata = new Class1();
            mydata.show_Data(dGV,btn_Click);
        }
    }
}

  注:上面的程序是连接Access数据库,在winform窗体中显示Access数据库中的数据。

会遇到各种版本的限制。

时间: 2024-10-22 20:14:23

c#生成动态库并加载的相关文章

如何逐步实现动态库的加载,类型的匹配

如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可:  #define LIBEXPORT_API extern "C" __declspec(dllexport) 第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和: LIBEXPORT_API int mySum(int a,int b){ return a+b;}  C# 导入定义: public class RefComm  {  [DllImport("

关于Linux动态库的加载路径

问题 按如下步骤在Ubuntu上编译安装Google Protocol Buffers $ ./configure $ make $ make check $ sudo make install 运行 $ protoc --version 出现找不到动态库的错误 protoc: error while loading shared libraries: libprotobuf.so.7: cannot open shared object file: No such file or direct

VC中实现dll动态库文件加载

例如有动态库:math.h; math.dll; math.lib1.系统路径中包含math.dll路径.2.VC工程中,“项目”>”属性“>”C/C++“>”常规“>”附加包含目录“,加入math.h所在路径.3.VC工程中,“项目”>”属性“>”连接器“>”常规“>”附加库目录“,加入math.lib所在路径.4.VC工程中,“项目”>”属性“>”连接器“>”输入“>”附加依赖项“,加入"math.lib".

GCC生成动态库

以下内容仅作为本人工作笔记 main.c 1 #include <stdio.h> 2 void hello(void); 3 int main(int argc, char ** argv) { 4 printf("This is main function!\n"); 5 hello(); 6 return 0; 7 } hello.c 1 #include <stdio.h> 2 void hello() { 3 printf("This is

Linux生成动态库系统

Linux生成动态库系统 一个.说明 Linux下动态库文件的扩展名为 ".so"(Shared Object). 依照约定,全部动态库文件名称的形式是libname.so(可能在名字中增加版本). 这样.线程函数库被称作libthread.so. 静态库的文件名称形式是libname.a.共享archive的文件名称形式是libname.sa.共享archive仅仅是一种过渡形式,帮助人们从静态库转变到动态库. 小编综合自己学习体会以及网络上较好的内容.以简单的样例介绍动态库文件的生

gcc编译工具生成动态库和静态库之一----介绍

 1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有别于静态库,动态库的链接是在程序执行的时候被链接的.所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用.(TODO:链接动态库时链接阶段到底做了什么) 2 静态库和动态库的比较 链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已.因为静态库被链接后

linux 生成动态库时提示relocation R_X86_64_32 against `.rodata&#39; can not be used when making a shared object;

linux生成动态库时遇到了relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC错误. 由于我的系统是AMD64位的,所以需要在编译的时候添加 -fPIC选项 解决方法: 例如: g++ -c -fPIC head.cpp    生成head.o g++ -fpic -shared -o libfun.so head.o linux 生成

[转] 通过反射实现动态功能模块加载

原文 如何通过反射实现动态功能模块加载 程序集包含模块,而模块包含类型,类型又包含成员.反射则提供了封装程序集.模块和类型的对象.您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访问其字段和属性. 下面我们将介绍如何通过不使用反射的方式和使用反射的方式加载功能模块.实现效果: 1. WinForm 主程序 主程序我们使用Winform程序,VS2008 工具C#语言开发.包括工具栏.状态栏及TabControl控件.我们使用TabCon

cmake同时生成动态库与静态库的方法

我的目录结构 [[email protected] createLibrary]$ tree . ├── bin ├── build ├── CMakeLists.txt ├── include │   └── person.h ├── lib └── src ├── CMakeLists.txt ├── main │   ├── CMakeLists.txt │   └── main.cpp └── person ├── CMakeLists.txt └── person.cpp 7 dire