精华内容
下载资源
问答
  • VS 动态库的静态调用以及动态调用

    千次阅读 2018-10-15 16:27:36
    VS 动态库的静态调用以及动态调用动态库的建立动态库的静态调用动态库的动态调用 动态库的建立 MyMath.h #pragma once extern "C" __declspec(dllexport) int add(int x, int y); ...

    VS 动态库的静态调用以及动态调用

    动态库的建立

    VS 2015新建DLL工程

    • MyMath.h
    #pragma once
    
    extern "C" __declspec(dllexport) int add(int x, int y);
    
    • MyMath.cpp
    #include "MyMath.h"
    
    int add(int x, int y)
    {
    	return x + y;
    }
    

    编译生成动态库,产生dll文件,lib文件,此处lib文件是导入库。(PS:lib文件分为导入库和静态链接库)

    • 为什么要加 extern “C”
      加上extern “C” 会以C编译器的方式去命名导出函数名! 用depends工具可以看出区别

    百度云链接:depends 提取码:acox
    读者可以自行测试,加extern "C"生成的dll与不加生成的dll,在工具中的符号

    动态库的静态调用

    将动态库头文件MyMath.h添加到测试程序中,并将.lib文件以及.dll文件拷贝至测试程序的Debug目录下。

    #include <iostream>
    #include "MyMath.h"
    #include <windows.h>
    using namespace std;
    
    #pragma comment(lib,"F:/SVN/MyDll/Debug/MyDll.lib")
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int t = add(2, 3);
    	cout << t << endl;
    	getchar();
    	return 0;
    }
    

    此处.lib文件为导入库,而并非静态链接库,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息。

    动态库的动态调用

    只需要一个.dll文件即可完成动态调用。

    #include <windows.h>
    #include <iostream>
    using namespace std;
    typedef int(*Add)(int, int);
    int main()
    {
    	HINSTANCE hIn = NULL;
    	hIn = LoadLibrary(_T("F:/SVN/MyDll/Debug/MyDll.dll"));
    
    	if (hIn == INVALID_HANDLE_VALUE)
    	{
    		cout << "Load DLL error" << endl;
    		return -1;
    	}
    
    	Add pFun = NULL;
    	pFun = (Add)GetProcAddress(hIn, "add"); 
    	int i = pFun(2, 4);
    	cout << "pFun(2, 4) = " << i << endl;
    	
    	FreeLibrary(hIn);
        return 0;
    }
    
    
    展开全文
  • 动态调用方法

    千次阅读 2017-03-08 13:40:55
    动态调用方法

            若 Action 中存在多个方法,但在配置文件中注册该 Action 时,并未为每个方法指定一个<action/>,而是只为这一个 Action 类注册了一个<action/>。那么,当用户访问该<action/>的时,到底执行哪个方法,则是由用户发出的请求动态决定。即仅从配置文件是看不出<action/>标签是对应哪个方法的,只有在运行时根据具体的用户请求,才可决定执行哪个方法。这种情况称为动态调用方法。动态调用方法有两种实现方式。

    动态方法调用

            动态方法调用是指,在地址栏提交请求时,直接在 URL 后跟上“!方法名”方式动态指定要执行的方法

            不过,动态方法调用默认是关闭的,可以通过改变“动态方法调用”常量struts.enable.DynamicMethodInvocation的值来开启动态方法调用功能。

            可以在struts.xml中设置struts.enable.DynamicMethodInvocation = true;

    方法如下,在struts节点下加下面这句。

    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    示例:

    Action代码示例:

    package cn.ccnu.actions;
    
    public class SomeAction {
    	public String doFirst(){
    		return "first";
    	}
    	
    	public String doSecond(){
    		return "second";
    	}
    }
    struts.xml代码示例

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
    	<constant name="struts.enable.DynamicMethodInvocation " value="true"/>
        <package name="default" namespace="/" extends="struts-default">
            <action name="some" class="cn.ccnu.actions.SomeAction">
            	<result name="first">/first.jsp</result>
            	<result name="second">/second.jsp</result>
            </action>
        </package>
    </struts>
    地址栏访问

    http://localhost:8080/02_dynamicmethodinvocation/some!doFirst.action

    二使用通配符定义的 Action

            使用通配符定义的 action 是指,在配置文件中定义 action 时,其 name 中包含通配符*。请求 URL 中提交的 action的具体值,将作为*的真实值。而<action/>中的占位符(占位符,从1开始计数)将接收这个真实值。占位符一般出现在 method 属性中。

    示例:

    Action代码示例如上。

    struts.xml代码示例

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <package name="default" namespace="/" extends="struts-default">
            <action name="some_*" class="cn.ccnu.actions.SomeAction" method="{1}">
            	<result name="first">/first.jsp</result>
            	<result name="second">/second.jsp</result>
            </action>
        </package>
    </struts>
    

    地址栏访问

    http://localhost:8080/02_dynamicmethodinvocation/some_doFirst.action

    展开全文
  • LabVIEW动态调用VI及调用路径问题

    万次阅读 多人点赞 2018-09-12 17:01:17
    动态调用VI是指在调用程序运行时动态加载VI,执行完后从内存卸载,自动释放内存,动态调用VI又分为通过引用调用节点(严格类型的VI引用)的动态调用和通用(我这么称呼的)动态调用。通过引用调用VI不仅指向被调用的...

    在LabVIEW程序设计中,调用VI一般分为静态调用和动态调用,静态调用是指被调用VI在VI调用程序的程序框图上直接放置子VI,它与VI调用程序同时加载,而且常驻内存 ,直至调用它的VI运行结束。动态调用VI是指在调用程序运行时动态加载VI,执行完后从内存卸载,自动释放内存,动态调用VI又分为通过引用调用节点(严格类型的VI引用)的动态调用和通用(我这么称呼的)动态调用。通过引用调用VI不仅指向被调用的VI,还指向被调用VI的连线板,这样我们就可以向被调用VI传递参数,并获得被调用VI的输出参数。
    在实际应用中,对于需要向其传递参数、进行复杂数据处理、且不需要显示界面的子VI调用,我一般采用通过引用节点的动态调用;如果只是动态调用子VI,显示其界面进行相关操作,我通常采用通用动态调用。下面我们通过示例说明两种动态调用方法。

    1. 通过引用调用节点的动态调用

    先创建一个子VI,文件名为add.vi,其作用是两个浮点数相加,设置连线板,输入端分别指向两个加数,输出端指向两个加数的和,其前面板和程序框图如下图所示。
    这里写图片描述

    设计一个调用VI,文件名为CallVIByRef.vi,实现通过引用节点动态调用add.vi(调用时add.vi不显示前面板),其前面板和程序框图如下图所示。
    这里写图片描述

    2. 通用动态调用

    除了通过引用动态调用VI外,还有一种动态调用VI,我叫它通用动态调用VI,以下是其程序框图。
    这里写图片描述

    上图中,“运行VI”调用节点的“Wait Until Done”属性设置为False,表示被调用VI被执行、显示界面后,调用VI还可以继续去干别的事情,这相当于显示调用了一个无模态对话框。如将“Wait Until Done”属性设置为True,则表示执行模态对话框调用,即被调用VI关闭后,调用VI才能继续干别的事情程序框图如下图所示。
    这里写图片描述
    以上两种(模态和无模态调用VI)调用方式,被调用VI执行完毕后需要自己关闭前面板,如下图所示。
    这里写图片描述

    3. 被调用VI的路径问题

    在动态调用VI时,经常发生在开发环境下能正常调用VI,一旦打包成执行文件后,调用就出现了异常,原因是打包后LabVIEW会把exe文件看作是一层目录,这样按以前相对路径关系就找不到被调用VI了,所以出现了异常。
    读者可以参考网上的解决办法,笔者也提出一种解决办法:先看下面的项目。
    这里写图片描述
    通过测试分析,不管是开发环境下还是打包成执行文件,如果把LabVIEW项目根目录的Main.vi作为当前VI,那项目下所有VI和main.vi的相对路径关系就确定了(注意必须是磁盘上文件路径关系,不是虚拟文件夹中的文件路径关系)。在程序中,先调用“拆分路径”函数节点得到main.Vi所在文件的绝对路径,再调用“创建路径”函数节点得到所调用VI的路径(含被调用VI文件名),如下图所示。
    这里写图片描述
    在Main.vi中,如要调用项目中的“VIFromSubPath.vi”文件,则上图中的“调用VI路径及文件名”赋值为“SubPath\VIFromSubPath.vi”,如要调用“VIFromSubVI.vi”,则“调用VI路径及文件名”赋值为“SubPath\SubVI\VIFromSubVI.vi”。这样,不管是打不打包,调用路径关系都是正确的。
    撰写此文主要是备忘,也希望对读者有所帮助。

    以上示例vi(LabVIEW 2012下设计)放在百度网盘上,有兴趣的读者可以下载使用 。
    vi下载地址:DynamicCall.rar

    展开全文
  • LabVIEW调用子VI(subVI)有两种方法:1)...2)通过程序框图-查看(菜单)-函数-编程-应用程序控制-通过引用调用,通过VI引用动态调用,可以保证VI在需要时才被装入内存,与静态调用相比节约了内存资源。 异步调用优...

    LabVIEW调用子VI(subVI)有两种方法:1)通过程序框图-查看(菜单)-函数-选择VI...,在程序框图上添加子VI时,该子VI的调用方法是静态链接的,即编译生成可执行程序后,子VI的代码将会被静态链接到可执行程序中;2)通过程序框图-查看(菜单)-函数-编程-应用程序控制-通过引用调用,通过VI引用动态调用,可以保证VI在需要时才被装入内存,与静态调用相比节约了内存资源。

    异步调用优点官方解释如下:http://zone.ni.com/reference/zhs-XX/help/371361H-0118/lvconcepts/asynchronous_vi_calls/

    如通过子VI节点或通过引用调用节点以标准调用方法调用一个VI,数据流在被调用节点处暂停直到子VI返回结果。然后数据流从节点的输出端继续。

    与上述方式不同,异步调用VI时,子VI运行的同时数据流仍然在调用方VI中继续。如调用方VI不是立即需要子VI的执行结果,就可考虑异步调用子VI。在这些情况下,异步调用可使子VI和调用VI并行运行,明显优化调用方VI的执行时间。关于异步VI调用的优点,请参考下列编程情境范例:

    • 将任务分配给子VI,主VI继续运行
    • 将一个任务的工作量分散到同一个VI的各个实例,尤其是直到运行时才知道任务需要的VI实例的个数
    • 打开复杂的用户界面,界面由若干个单独的VI组成。这些VI必须并行运行,同时收集结果
    展开全文
  • C++,动态链接库的动态调用,以及如何动态调用库中的函数和类。
  • C# 动态调用方法

    千次阅读 2017-12-14 11:42:32
    此篇将介绍C#如何在运行时动态调用方法。当某些类型是运行时动态确定时,编译时的静态编码是无法解决这些动态对象或类的方法调用的。此篇则给你一把利剑,让动态对象的方法调用成为可能。 1.动态调用dll里的方法 ...
  • DLL的动态调用: 首先创建一个DLL的文件,CreateDLL 在CreateDLL.h文件中声明你所需要供其他文件调用的函数: extern &quot;C&quot; _declspec(dllexport) CREATEDLL_API void printMax(int&amp;amp;,...
  • LabVIEW 的动态调用

    千次阅读 2017-06-26 10:11:32
    如果程序中所使用的VI较多,且有些VI很大并属于基本上不太常用的VI,为避免占用内存的使用或减少程序的导入时间,也可以进行VI的动态调用。所谓动态调用是指在程序运行需要时再调入,运行完成后从内存中将其清除。VI...
  • 动态调用与静态调用

    千次阅读 2012-07-31 10:10:03
    动态调用与静态调用 最近学习了动态调用与静态调用的一些知识。哈哈。写一些心得体会。 首先讲一下库函数。所谓的库函数,就是很多函数的集合,实现各种功能的函数集中起来供程序调用。这样就有利于共享...
  • python动态调用函数

    千次阅读 2018-04-03 10:42:08
    会java的开发人员都知道java中动态调用一个类中的方法都是使用反射机制,动态加载class(包名+类名+'.class')获取类对象,然后再获取method,再调用对应方法等但是python中在一个py文件中,不通过from...import来引入...
  • VS下动态库dll的显式调用(动态调用)

    千次阅读 2017-09-14 16:18:37
    VS下动态库dll的显式调用 动态库的加载分两种形式:分为静态加载和动态加载。静态加载时,对应的头文件、DLL,和LIB缺一不可,并且生产的EXE没有找到DLL文件就会...Dll的动态调用常规代码如下: //#include #include
  • [C++]调用DLL有两种方法——静态调用和动态调用 (一).静态调用其步骤如下:  1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;  2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的...
  • 动态链接库的调用方式有两种,一种是静态调用,一种是动态调用。静态调用dll比较简单,将.dll,.h,.lib放在工程下,在工程里使用下列格式包含,就可以直接使用了。 #pragma comment(lib,"XXX")  而...
  • .Net——动态调用方法

    千次阅读 热门讨论 2015-04-25 19:09:19
    一,使用InvokeMember思路:在类型的type的对象上调用InvokeMember方法,传递要在其上调用方法的对象...示例(对普通方法和对静态方法的调用): #region 动态调用方法——使用InvokeMember对一般方法的调用 //Type t =
  • CXF客户端动态调用

    千次阅读 2016-06-03 11:49:55
    使用CXF实现WebService,并在客户端实现动态调用编写服务器注意事项 注意 :不要指定 @SOAPBinding(style=Style.RPC, use=Use.LITERAL) 因为cxf 不支持:rpc、encoded,在动态客户调用过程。 问题二: Caused by...
  • python 动态调用函数实例解析

    千次阅读 2020-02-22 21:59:42
    根据字符串名称 动态调用 python文件内的方法eval(“function_name”)(参数) 根据字符串 动态调用类中的静态方法,getattr(ClassName,“function_name”)(参数) apply(functoin_name,parameters) 这个function_...
  • DLL调用(2):C++动态调用DLL

    千次阅读 2017-12-12 18:42:07
    动态调用也被称为显示调用,即在运行程序过程中,需要调用DLL中的功能时才调用。相对于隐式调用,此种方式会有明确的语句载入DLL和获取其中的函数地址,调用过程相对静态调用会复杂一些,但不需要LIB文件的支持,仅...
  • [C++]调用DLL有两种方法——静态调用和动态调用 (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)...
  • cxf动态调用WebService

    千次阅读 2015-04-06 17:59:45
    最近突然发现原来调用webservice服务端如此的方便,于是自己看了看,这种是使用cxf的JaxWsDynamicClientFactory动态调用的,主要时间花在了找包的时间上,另外,这种方式虽然调用方便,但是每一次调用都会扫描到接口...
  • A页面: $(".query").on("click", function () { //动态获取data-method属性对应的值 var method = $(this).data("method"); //method不能为空 if(method){ //动态触发事件 callbarek[method](); ...
  • vc 调用dll 静态调用和动态调用.

    千次阅读 2012-06-12 14:20:21
    调用DLL有两种方法:静态调用和动态调用. (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下...
  • 如何动态调用 C 函数

    千次阅读 2016-08-30 18:07:03
    JSPatch 支持了动态调用 C 函数,无需在编译前桥接每个要调用的 C 函数,只需要在 JS 里调用前声明下这个函数,就可以直接调用: require('JPEngine').addExtensions(['JPCFunction']) defineCFunction("malloc", ...
  • VB静态调用与动态调用dll详解

    千次阅读 2013-12-23 17:35:42
    静态调用占用资源多,动态调用占用资源少;正所谓鱼和熊掌不可兼得。 静态调用定义:  就是常用的申明API,一个DLL库里有很多的函数可供调用,把要用的申明即可。  比如:Public/Private Declare Functio
  • dlopen 和 dlsym 动态调用函数

    千次阅读 2018-12-31 20:43:24
    Linux/unix 提供了使用 dlopen 和 dlsym 方法动态加载库和调用函数,这套方法在 macOS 和 iOS 上也支持。 dlopen 打开一个库,获取句柄。 dlsym 在打开的库中查找符号的值...动态调用 printf 函数,编写测试代码如...
  • oc runtime动态调用方法

    千次阅读 2017-12-25 12:19:48
    oc runtime 动态调用方法 首先文章是参考: https://www.jianshu.com/p/0280e95bebeb 根据方法名获取方法对应的SEL类型数据, 再根据SEL获取方法指针IMP 最后根据IMP定义方法,运行。 调用无参...
  • 接口多实现类动态调用的两种方式

    千次阅读 2020-12-06 15:17:48
    接口多实现类动态调用的两种方式 本篇内容: 一个接口在不同场景,需要有不同的实现类,实现动态调用 模拟场景: 学生、教师部分在中国,部分在泰国,处理方式需要区分,接口国际化支持会传入一个来源,根据来源...
  • DEDECMS三级导航动态调用

    千次阅读 2017-01-10 09:07:26
    DEDECMS三级导航动态调用
  • Python3 根据函数名动态调用函数

    千次阅读 2019-07-02 21:18:48
    最近项目需求,需要动态调用函数,这里整理一下思路。 很多时候,我们需要根据外面传进来的字符串取动态调用函数,并获取返回值。例如单项目检查等,检查的类型可以事先在定义文件中配置好,这样后期维护的时候,...
  • C# 动态调用WebService

    千次阅读 2014-02-21 19:24:37
    C#调用WebService的方式有很多: 1、直接在项目中添加WebService引用,这种方式比较简单,但不是动态的,即每次服务地址或者内容变了之后都要重新添加引用。 2、用Soap,这种方式需要把添加...3、动态调用,代码如下:
  • Unity动态调用Shader要注意

    千次阅读 2018-05-31 17:22:46
    动态调用的shader必须放在resource文件夹下,否则打包后会出现问题。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,061
精华内容 35,224
关键字:

动态调用