精华内容
下载资源
问答
  • VB.NET 生成DLL文件 调用DLL文件

    千次阅读 2018-02-28 21:02:48
    VB.NET 生成DLL文件 调用DLL文件打开VS2013选择 类库 (1)写入一下代码Public Class Class1 Public Function world() world=“哈喽世界!” End FunctionEnd Class(2)选择 生成——生成world.DLL文件Class1...

     VB.NET 生成DLL文件 调用DLL文件

    打开VS2013选择 类库 

    (1)写入一下代码

    Public Class Class1

        Public Function world()
            world=“哈喽世界!”

        End Function

    End Class

    (2)选择 生成——生成world.DLL文件

    Class1.DLL

    (3)新建——Visual Basic——Windows—— Windows出题引用程序(新建一个FOrm1)

    (4)选择 调试——***属性——引用——添加(选择world.DLL文件

    Imports world

    Public Class Form6               

     Dim fEKEYE As New world.Class1

                    Dim fck26012018s = fEKEYE.world

                     MsgBox(fck26012018s)

    End Class

    (5)运行得到结果是弹出一个信息提示框,显示内容是“哈喽世界!”。

    (6)将world.DLL文件复制生成的EXE文件目录下即可使用。

    展开全文
  • python DLL文件调用问题

    万次阅读 2018-12-29 13:40:42
    在网上搜索很多关于pythonDLL文件调用的问题,大多给出的都是DLL文件的编写,然后python调用,但是在调用中遇到的一些问题却很少有提及,下面将给出在python调用DLL文件时遇到的一些问题等。  ctypes官网:...

            在网上搜索很多关于pythonDLL文件调用的问题,大多给出的都是DLL文件的编写,然后python调用,但是在调用中遇到的一些问题却很少有提及,下面将给出在python调用DLL文件时遇到的一些问题等。

            ctypes官网:https://docs.python.org/3.6/library/ctypes.html?highlight=ctypes#module-ctypes

            python dll文件调用网上出现的最多的是和下面这个博客链接里面的内容差不多:https://blog.csdn.net/magictong/article/details/3075478

            1、错误:OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

    Traceback (most recent call last):
      File "G:/AutoTool/driver/Instrument_dynamic.py", line 12, in <module>
        dll = cdll.LoadLibrary("Dll1.dll")
      File "E:\python\python3\lib\ctypes\__init__.py", line 426, in LoadLibrary
        return self._dlltype(name)
      File "E:\python\python3\lib\ctypes\__init__.py", line 348, in __init__
        self._handle = _dlopen(self._name, mode)
    OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

            当遇到这个问题的时候,是因为程序当当前的编辑运行环境不匹配,拿DLL文件调用来说,你在64位的python环境下调用32位的DLL文件肯定是不行的,这时你需要把python环境换成32位的。

            2、C/C++的DLL文件编写,简单的小示例。

    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    typedef struct _SimpleStruct
    {
    	int    nNo;
    	float  fVirus;
    	char   szBuffer[2];
    } SimpleStruct, *PSimpleStruct;
    typedef const SimpleStruct*  PCSimpleStruct;
    
    extern "C" int  __declspec(dllexport) PrintStruct(PSimpleStruct simp);
    int PrintStruct(PSimpleStruct simp)
    {
    	printf("nMaxNum=%f,szContent=%s", simp->fVirus, simp->szBuffer);
    	return simp->nNo;
    }

            3、python调用编写好的DLL文件,可以帮助理解DLL文件的调用。

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # author:SingWeek
    
    from ctypes import *
    class SimpStruct(Structure):
        _fields_ = [("nNo", c_int),
                    ("fVirus", c_float),
                    ("szBuffer", c_wchar)]#“”中的命名可以自己指定
    
    dll = CDLL("Dll1.dll")
    # print(dll.PrintStruct)
    simple = SimpStruct()
    simple.nNo = 16
    simple.fVirus = 3.1415926
    simple.szBuffer = "x"
    out=dll.PrintStruct(byref(simple))
    print(out)

            4、python下通过from ctypes import *调用DLL文件的注意事项:

            想要正确调用dll文件,你要找到正确的调用约定,必须查看C头文件或要调用的函数的文档。整数、字节对象和(unicode)字符串是唯一可以在这些函数调用中直接用作参数的本地Python对象。它们都不作为C语言NULL指针传递,字节对象和字符串作为指针传递给包含它们的数据的内存块(char*或wchar_t*)。Python整数作为平台默认的C int类型传递,它们的值被屏蔽以适合于C类型。在继续使用其他参数类型调用函数之前,我们必须了解更多关于ctypes数据类型的信息。

            Python ctypes 数据类型表

    ctypes type

    C type

    Python type

    c_bool

    _Bool

    bool (1)

    c_char

    char

    1-character bytes object

    c_wchar

    wchar_t

    1-character string

    c_byte

    char

    int

    c_ubyte

    unsigned char

    int

    c_short

    short

    int

    c_ushort

    unsigned short

    int

    c_int

    int

    int

    c_uint

    unsigned int

    int

    c_long

    long

    int

    c_ulong

    unsigned long

    int

    c_longlong

    __int64 or long long

    int

    c_ulonglong

    unsigned __int64 or unsigned long long

    int

    c_size_t

    size_t

    int

    c_ssize_t

    ssize_t or Py_ssize_t

    int

    c_float

    float

    float

    c_double

    double

    float

    c_longdouble

    long double

    float

    c_char_p

    char * (NUL terminated)

    bytes object or None

    c_wchar_p

    wchar_t * (NUL terminated)

    string or None

    c_void_p

    void *

    int or None

            5、function ‘test’ not found!,是因为dll文件中没有对应函数,The specified module could not be found或者function ‘***’ not found

            6、Procedure called with not enough arguments (** bytes missing) or wrong calling convention,在调用DLL文件中的对应函数的时候,参数传递出错,可能是参数少了,也可能是参数类型不对等引起的,此时需要核对DLL文件中的参数结构形式。

             7、首先有这个函数会出现一串地址print(cdll.kernel32.GetModuleHandleA),如果向dll调用的函数中传入的参数发生错误,会出现如下问题。

            8、重点:在dll文件中的调用方式有几种,他们分别对应不同的约定。其中cdll用于加载遵守cdecl标准函数调用约定的连接库;windll用于加载遵循stdcall调用约定的动态链接库,oledll和windll完全相同,只是会默认其载入的函数会统一返回一个windows result错误编码。在python中除了cdll,还可以用pydll功能相同,大小写的区别在于小写需要添加LoadLibrary进行dll文件调用;大写的可以直接将dll文件名放进局可以了。

            stdcall调用约定:stdcall很多时候被称为pascal调用约定,因为pascal是早期很常见的一种教学用计算机程序设计语言,其语法严谨,使用的函数调用约定就是stdcall。在Microsoft C++系列的C/C++编译器中,常常用PASCAL宏来声明这个调用约定,类似的宏还有WINAPICALLBACKstdcall调用约定声明的语法为(以前文的那个函数为例):int __stdcall function(int a,int b)

            stdcall的调用约定意味着:1)参数从右向左压入堆栈,2)函数自身修改堆栈 3)函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸。注意不同编译器会插入自己的汇编代码以提供编译的通用性,但是大体代码如此。

            cdecl调用约定:cdecl调用约定又称为C调用约定,是C语言缺省的调用约定,它的定义语法是:

    int function (int a ,int b) //不加修饰就是C调用约定,int __cdecl function(int a,int b)//明确指出C调用约定。cdecl调用约定的参数压栈顺序是和stdcall是一样的,参数首先由右向左压入堆栈。所不同的是,函数本身不清理堆栈,调用者负责清理堆栈。

            9、DLL文件查看:可以在这个链接中下载dll查看器http://www.dependencywalker.com/。可以查看Dll中的相关函数等,方便对对应dll的功能函数进行编写。下载后点击运行,直接将DLL文件放进来或者打开后就可以查看。

    10、在python中除了通过byref传入指针地址外,还有一个函数pointer。原文链接:http://www.pythontip.com/blog/post/9835/

          

    展开全文
  • 使用MSVC编译,编译后会生成*.dll 与*.lib 两个文件,.dll 在程序运行时调用,.lib 在应用程序隐式调用动态链接库时使用。 使用MinGW编译,编译后会生成*.a与*.lib两个文件,.a 在程序运行时调用,.lib在在应用程序...

    一个共享库导出给用户使用的类,符号,函数等都需要使用宏Q_DECL_EXPORT来定义导出,
    一个使用共享库的应用程序需要通过定义Q_DECL_IMPORT 导入共享库里的可用对象。

    WIN32 平台下的DLL

    使用MSVC编译,编译后会生成*.dll 与*.lib 两个文件,.dll 在程序运行时调用,.lib 在应用程序隐式调用动态链接库时使用。
    使用MinGW编译,编译后会生成*.a与*.lib两个文件,.a 在程序运行时调用,.lib在在应用程序隐式调用动态链接库时使用。

    动态库的调用方式:隐式链接(implicit linking) ,显示链接(explicit linking) .

    隐式链接调用编译的应用程序时,用动态库的lib文件(或者.a 文件)以及 h 头文件,知道DLL中有哪些接口类和函数,编译时就隐式地生成必要的链接信息,使用DLL中的类或者函数时根据h头文件中的定义使用即可。
    应用程序运行时将自动加载DLL文件。隐式链接调用主要用于同一种类型编程语言(如Qt)生成的代码的共享。

    显示链接调用是只有DLL文件,知道DLL里的函数原型,使用QLibrary类对象在应用程序里动态加载DLL文件,并使用DLL里的函数。这种方式需要在应用程序里声明函数原型,并解析DLL里的函数。
    显示链接:可以调用其他语言编写的DLL文件,例如:Delphi编写的DLL库文件。

    展开全文
  • 因为公司使用jenkins 所以dll文件放在项目里面通过maven打包 发布 dll文件的加载使用项目的绝对路径,所以在测试方法里面没有问题,但是放在tomcat里面就是加载不了。 找了好久才发现是maven编译后,拷贝文件的...

     因为公司使用jenkins 所以dll文件放在项目里面通过maven打包 发布

    dll文件的加载使用项目的绝对路径,所以在测试方法里面没有问题,但是放在tomcat里面就是加载不了。

    找了好久才发现是maven编译后,拷贝文件的时候将文件流都转了编码,整个dll文件都变大了。

    在maven里面加上

    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-resources-plugin</artifactId>
       <configuration>
           <encoding>UTF-8</encoding>
           <!-- 过滤后缀为dll的文件 -->
           <nonFilteredFileExtensions>
               <nonFilteredFileExtension>dll</nonFilteredFileExtension>
           </nonFilteredFileExtensions>
       </configuration>
    </plugin>


    在此编译 后dll就正常了,网上也有很多童鞋因为这个原因 导致 pdf 、execl、等文件拷贝过去后不能使用,都是一样的道理。

    展开全文
  • Java项目JNA对so/dll文件调用的UnsatisfiedLinkError问题

    千次阅读 热门讨论 2019-07-31 11:24:40
    项目比较紧张,不能谈论细节,只是做一个记录,关于生成dll文件可以看这篇:查看(有问题可以私我) 最近项目用了dll动态库和so库,分别是在Windows上调用dll和linux上调用so库的问题。使用了jna就需要对dll文件或者...
  • ![图片说明](https://img-ask.csdn.net/upload/201709/21/1505975365_589827.png)![图片说明](https://img-ask.csdn.net/upload/201709/21/1505975372_315015.png)
  • 2:本例加载DLL文件对像:Dim TAA As System.Reflection.Assembly 3:用于选择DLL文件代码  OOF.InitialDirectory = Application.StartupPath  OOF.Filter = "DLL文件(*.dll)|*.dll|所有文件(*.*)|*.*"  OOF...
  • C# 调用DLL文件

    2009-04-23 14:06:06
    C# 调用DLL文件C# 调用DLL文件C# 调用DLL文件C# 调用DLL文件C# 调用DLL文件C# 调用DLL文件C# 调用DLL文件
  • 易语言编写dll文件,在新建中选择 编写动态链接库 然后我们看到的就是这样的 这里要注意的是,可以直接在启动子程序下些命令,勾选公开,一样可以调用。但是程序会运行两遍。 方法,忽略上面默认代码,直接...
  • java调用dll文件,可以用 System.load() 或者 System.loadLibiary() 个人认为loadLibiary不太好,需要把dll放...
  • 在C++中有dll、lib和h头文件,这些文件各自有各自的作用。对于调试代码到生成一个可执行文件的过程中,...一、生成dll文件。 看以下代码: #include using namespace std; //生成dll文件声明 extern "C" int __decls
  • dll文件调用

    千次阅读 2018-07-23 16:21:31
    下面是显性调用dll文件内函数的方法。 //声明一个函数类型 typedef void (*LSInitFinger)( const char* ip, const int port); //显示加载dll文件 DWORD dwLastError = 0; HMODULE hDLL = Load...
  • 如何写DLL文件调用DLL文件

    千次阅读 2012-12-08 19:49:29
    原文地址:... 1.写DLL ...打开VC++6.0,选择建立工程的动态链接库工程,建立一个Dll1的工程,写两个简单的函数, ...注意此时函数并没有导出,所以是不能访问的,也是不能调用的,此时dll内部结构如下
  • vs工程生成dll文件及其调用方法

    万次阅读 多人点赞 2019-06-12 16:33:00
    vs工程生成dll文件及其调用方法1、vs工程中dll文件的生成1.1、将生成exe文件的工程修改为生成dll文件1.2、新建工程生成dll文件2、关于dll文件调用 1、vs工程中dll文件的生成 1.1、将生成exe文件的工程修改为生成...
  • Dev c++工具将C代码生成dll文件以及如何调用dll文件

    万次阅读 多人点赞 2017-08-03 17:47:18
    该篇文章是对工作中一个需求的总结,工作需求是要将C语言的函数接口,生成一个DLL文件,让labview调用。然后我尝试用devc++开发工具来实现这个功能,后来因为DLL生成了,但labview调用的结果和C执行的结果不一致,...
  • 我的预期,windows服务一直在机器上运行,当我想更新对应dll的方法时,只需要在windows服务没调用这个dll的时候,把文件替换。 部分代码: foreach (DataRow dr in ds.Tables[0].Rows) 根据条件在数据库中查的结果...
  • 1.vs2015下生成DLL文件文件-&gt;新建-&gt;项目点击确定选择dll选项和空项目选项点击完成 为项目添加c++源文件mydll.cppextern "C" // 此处extern "c" 为解决c/c++兼容问题 { _declspec...
  • Java调用dll文件

    千次阅读 2020-04-21 23:20:55
    近期根据C++做了一个图片质量检测的项目,目前需要在在java中进行调用,所以先在C++上生成dll文件,然后基于java调用dll文件实现功能。 环境: C++:VS2017(之前配置opencv真是要了老命) java:idea2020+jdk1.8。 ...
  • 比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装了.NET Framework并把csc.exe加入了环境变量(参考我的另...
  • vc制作DLL文件调用DLL文件的方法

    千次阅读 2012-05-02 10:00:47
    一、制作DLL文件的步骤 2. 新建一个空项目(Empty project) 在类视图里新建一个普通类(Generic) 这是...
  • 近来又有人在群里问如何用c语言编制dll文件(动态链接库)。原来没有对这个问题太在意过,也没有尝试过任何解决方案,毕竟原来我是用vb的(现在用.net),做个dll只不过是点选一下建立activeX dll工程的图标而已。...
  • C# 调用dll文件

    万次阅读 2019-02-28 18:13:55
    动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式...
  • C# 调用 dll 文件

    千次阅读 2019-05-29 15:38:31
    一、先使用C++来创建一个 .dll 文件 1、创建新项目:CreateDll01 2、选择 “动态链接库(.dll)” 文件 3、在CreateDll01.cpp 源文件中添加如下代码 // CreateDll01.cpp : 定义 DLL 应用程序的导出函数。 /...
  • java调用dll文件

    2016-12-30 18:08:32
    java调用dll文件步骤,如有不懂请私聊,可能回复时间不够及时,忘谅解。
  • unity中调用dll文件总结 根据收集的资料,对unity中调用dll文件进行总结,目前常用的两种,在给出vs中封装dll文件的步骤。 一、调用c#中的dll文件 1.1封装dll文件 首先新建一个项目 然后创建一个类库,例如...
  • VS2010 VB如何生成DLL文件调用DLL

    万次阅读 2013-08-08 16:51:58
    一.创建dll文件 1.在vs2010中创建Class Library 项目; 工程名 2.输入代码   3.按F6编译生成Dll文件...调用dll文件 1.在vs2010中新建普通的Console项目(dllTest1) 2.将第一步生成的Dll文件(\myFirstDll\bin\Debu
  • MFC调用dll文件

    2017-07-07 10:13:14
    在MFC中调用dll文件的代码如下: 其中值得注意的是,在if(MyImageProcess(showImg) == FALSE) 一句中,输入的变量最好使用全局变量,如果使用内部变量,在Debug模式下,函数结束后会出现debug assertion failed错误...
  • VS2017创建DLL文件调用

    千次阅读 2019-08-19 22:57:46
    项目中甲方需要我把一个写好的函数打包成DLL,因为之前没有做过,中间也遇到了很多问题,比如找不到创建的DLL文件、生成了DLL但是没有生成lib文件等。 一、 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,292
精华内容 6,516
关键字:

dll文件调用