VB.NET动态调用某个DLL中的函数

问题描述

可能标题不能表达我实际要表达的意思。是这样的,在程序中需要调用一个特殊的dll中的函数这个dll中有类似A_1A_2...A_20这样的函数,有没有办法直接一个循环语句把这20个函数调用一次啊一些脚本编程语言里面就有类似的eval的功能不知道vb.net可以不?

解决方案

解决方案二:
纠结能不能写字符串当作函数名,对你来说,有多大意义吗?能成为一个软件设计师?
解决方案三:
在.net系统中,这类程序,如果一个工作了8年的程序员,面对一个2万行的、主要由他设计开发的系统,其中有几行代码需要动态特性,其实很容易就能做到。因为任何强类型的编程语言,不是不能动态调用,而是非常规范地用一套可保证基本性能、类型安全、保证基本调试能力的框架来调用动态特性,而且是将其使用量压缩到千分之一、不懂更合理的设计方式、不得不用的时候。这不是你现在该纠结的。你现在需要的不是把简单的东西弄花哨,而是把你想去花哨地表现的那个东西真正用正规的方式设计得非常强大了。你一点应用背景都不研究,就只是关心编程语句如何能“破”掉规范,这就是误入歧途了。
解决方案四:
引用楼主spark_li的回复:

可能标题不能表达我实际要表达的意思。是这样的,在程序中需要调用一个特殊的dll中的函数这个dll中有类似A_1A_2...A_20这样的函数,有没有办法直接一个循环语句把这20个函数调用一次啊一些脚本编程语言里面就有类似的eval的功能不知道vb.net可以不?

据我所知,不可以!
解决方案五:
通过反射就能调用了
解决方案六:
如果是C标准导出函数,可以写循环,LoadLibrary后,获取地址调用。如果.net写的,需要反射查找。但都没有复制粘贴来的快捷。
解决方案七:
反射,然后CallByName

时间: 2024-08-03 14:21:47

VB.NET动态调用某个DLL中的函数的相关文章

在C#中动态调用native dll的导出函数

动态|函数 在 C++ 中我们能够通过 LoadLibrary,  GetProcAddress 来动态调用 dll 的导出函数.在 C# 中也能够用这样的方式吗?在 DotNet 2.0 里面这样是可以的, 这完全得益于 2.0新增的一个函数Marshal.GetDelegateForFunctionPointer 方法 此方法在 .NET Framework 2.0 版中是新增的. 将非托管函数指针转换为委托. 实例代码如下: public delegate int MsgBox(int h

在 C# 中动态调用 native dll 的导出函数

在 C++ 中我们能够通过 LoadLibrary,  GetProcAddress 来动态调用 dll 的导出函数.在 C# 中也能够用这样的方式吗?在 DotNet 2.0 里面这样是可以的, 这完全得益于 2.0新增的一个函数Marshal.GetDelegateForFunctionPointer 方法 此方法在 .NET Framework 2.0 版中是新增的. 将非托管函数指针转换为委托. 实例代码如下: public delegate int MsgBox(int hwnd,st

c++-C#调用C++动态库DLL中的函数

问题描述 C#调用C++动态库DLL中的函数 C#调用C++动态库DLL中的函数,此函数参数中有bool(小写)类型的参数.c#该如何进行转换 解决方案 C#调用C++动态库dllC#调用C++动态库(dll)C#动态调用C++编写的DLL函数 解决方案二: bool类型的true 或false一般对应1和0.有的语言没有bool类型的.传递参数时可用整型替代. 解决方案三: public static extern int RD_CloseCom(bool IsOpen); 解决方案四: 在C

请高手帮我解决一个VB.NET调用c++ DLL 中的回调函数的问题

问题描述 我有个test.dll是c++写的dll,现在我要用vb.net调用这个dll中的SetCallback回调函数,请问怎么在vb.net中实现,请高手们具体列出代码,应我是新手,谢谢.以下是c++中的头文件定义的一部分typedefvoid(__stdcall*CCallback)(unsignedlongmsg,unsignedlonghparam,unsignedlonglparam);extern"C"voidR888DLL_API__stdcallSetCallbac

delphi-求救!!! 调用一个DLL文件的函数,提供的调用方法好像是Delphi,VB怎么调用!

问题描述 求救!!! 调用一个DLL文件的函数,提供的调用方法好像是Delphi,VB怎么调用! 提供的调用方法如下 3.2 封装模式 接口动态库的文件名为nxmi.dll,HIS直接调用nxmi.dll, 调用之前请先安装读卡环境,安装程序为inst.exe. 3.3 调用方法 对外提供的接口函数: Procedure invoke(params :PChar; result : PChar) ; 我现在在VB中写的如下: 在模块下定义 Public Declare Function invo

C#调用非托管C++DLL中的函数接口

问题描述 C#调用非托管C++DLL中的函数接口(有生成的DLL文件和Lib文件)怎么引用?引用项添加不了 解决方案 解决方案二:使用DllImport,添加引用只能针对.NET控件或COM组件.解决方案三:DllImport具体搜p/Invokehttp://www.cnblogs.com/xuqiang/archive/2010/12/21/1953355.html解决方案四:C++DLL中的函数中还调用了openCV的函数,能说一下怎么整么?解决方案五:引用3楼qq_28744297的回复

C#实现动态调用Windows DLL

调用方法: object obj = WinDllInvoke("Kernel32.dll", "Beep", new object[] { 750, 300 }, typeof(void)); 函数代码: 1 [System.Runtime.InteropServices.DllImport("kernel32")] 2 private static extern IntPtr LoadLibrary(string lpLibFileName)

c# adbwinapi.dll-c# 如何调用AdbWinApi.dll 中的API

问题描述 c# 如何调用AdbWinApi.dll 中的API 在google中搜索AdbWinApi.dll api 也找不到.希望高手帮忙 解决方案 http://blog.csdn.net/itjobtxq/article/details/17335851 既然有.h文件函数原型,就可以用dllimport申明函数,并且在C#中使用. 解决方案二: 调用dll的APIyesry 通过桥接器,Java调用任何API或DLL 解决方案三: 先下载AdbWinapi.dll,然后将其添加到项目的

在windows驱动代码中用汇编调用user32.dll中的MessageBoxA函数出错

问题描述 在windows驱动代码中用汇编调用user32.dll中的MessageBoxA函数出错 _asm { push eax; push ecx; push 0; push 0; push 0; push 0; mov ecx, MessageBoxAAddr; lea eax, mark; push eax; jmp ecx; mark: mov eax, eax; mov ebx, ebx; mov ecx, ecx; pop ecx; pop eax; } 其中MessageBox