精华内容
下载资源
问答
  • powerdesigner 16.5 破解文件dll文件 直接覆盖即可

    千次下载 热门讨论 2013-03-21 12:50:49
    google上的16.5破解文件竟然是个下载软件的假链接,一怒之下只好自己动手丰衣足食。 powerdesigner 16.5 破解文件下载后覆盖到安装目录即可。试用版版本信息不会变化,但是软件license不会过期。
  • 1.vs2015下生成DLL文件文件->新建->项目点击确定选择dll选项和空项目选项点击完成 为项目添加c++源文件mydll.cppextern "C" // 此处extern "c" 为解决c/c++兼容问题 { _declspec...

    1.vs2015下生成DLL文件


    文件->新建->项目



    点击确定选择dll选项和空项目选项




    点击完成 


    为项目添加c++源文件mydll.cpp


    1. extern "C" // 此处extern "c" 为解决c/c++兼容问题
    2. {
    3. _declspec(dllexport)int add(int a, int b)
    4. {
    5. return a + b;
    6. }
    7. extern "C"
    8. {
    9. _declspec(dllexport)int sub(int a, int b)
    10. {
    11. return a - b;
    12. }
    13. }


    编译生成 成功后会在工程根目录生成Win32Project1.dll文件

    2.对dll文件的调用


    显示调用动态链接库

    新建C++工程



    把生成的 Win32Project1.dll 文件拷贝到 刚才新建的工程目录下



    在工程中新建源文件写入代码为

    1. #include<iostream>
    2. #include<windows.h>
    3. void main()
    4. {
    5. HINSTANCE mydll = LoadLibrary("Win32Project1.dll"); //载入dll文件
    6. if (mydll == NULL)
    7. {
    8. return;
    9. }
    10. int(*add)(int, int) =( int (*)(int ,int )) GetProcAddress(mydll, "add");//获取函数指针
    11. /*
    12. 等价于
    13. typedef int(*myadd)(int, int); //给 函数指针int (*)(int, int ) 取别名 myadd
    14. myadd a = (myadd) GetProcAddress(mydll,"add"); //获取函数地址
    15. */
    16. if (add == NULL)
    17. {
    18. return;
    19. }
    20. std::cout << add(1, 2);
    21. std::cin.get();
    22. }


    编译并运行即可。

    展开全文
  • 如何注册DLL文件 将您下载的 "*. DLL" 文件复制到 "C:\Windows\system32\" 系统目录下 然后按 "Win键+R" 或单击 "开始"->"运行" 输入 "regsvr32 *.dll" 命令注册到系统文件。适用于Windows XP/2003/vista/win...
    •  如何注册DLL文件
    将您下载的 "*. DLL" 文件复制到 "C:\Windows\system32\" 系统目录下 然后按 "Win键+R" 或单击 "开始"->"运行" 输入 "regsvr32 *.dll" 命令注册到系统文件。适用于Windows XP/2003/vista/win7/win8.
    如何注册Windows\system32\下的所有.dll和.ocx文件?
    在开始->运行(win+r)下输入命令:
    cmd /c for %i in (%windir%\system32\*.dll) do regsvr32.exe /s %i
    cmd /c for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i
     
    注:如出现 “xxx.exe - 无法找到入口,无法定位程序输入点 xxx 于动态链接库 xxx.dll上。” 或是 “损坏的图像 应用程序或 DLL X:\xxx.DLL 为无效的 Windows 映像。请再检测一遍您的安装盘。” 的问题一般是由于dll文件版本与exe文件版本不同造成,此时可在你的系统内搜索该DLL文件,将搜索到的DLL同名文件全部删除,然后更换本站压缩包内的其他版本dll文件,再放进程序的目录或系统目录。
    展开全文
  • 比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装了.NET Framework并把csc.exe加入了环境变量(参考我的另...
    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll
    

    csc /target:library TestDLL.cs

    注意前提是你安装了.NET Framework并把csc.exe加入了环境变量(参考我的另一篇文章"C#.NET 如何在系统变量中加入新的环境变量.doc")

     

    除了编译成dll,你还可以用下面的命令编译成别的类型文件:

    /out:<file> 输出文件名(默认值: 包含主类的文件或第一个文件的基名称)

    /target:exe 生成控制台可执行文件(默认) (缩写: /t:exe)

    /target:winexe 生成 Windows 可执行文件 (缩写: /t:winexe)

    /target:library 生成库 (缩写: /t:library)

    /target:module 生成能添加到其他程序集的模块 (缩写: /t:module)

    /define:<symbol list> 定义条件编译符号 (缩写: /d)

    /doc:<file> 要生成的 XML 文档文件

     

    编译好的文件如何在主程序中调用呢?还是编译这个主程序文件(Program.cs),但是编译的时候需要引用TestDLL.dll这个文件,这样我们就得到了Program.exe文件,双击可以运行。

    csc /reference:TestDLL.dll Program.cs

     

    这样做的好处是显而易见的,主程序Program.cs仅仅是添加了对这个dll文件的引用,我要修改程序,只要重新编译这个dll,而不用再编译整个主程序。比如我修改了TestDLL.cs,然后重新编译,看主程序的运行结果。

    展开全文
  • C# 调用 dll 文件

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

    一、先使用C++来创建一个 .dll 文件

    1、创建新项目:CreateDll01

     

    2、选择 “动态链接库(.dll)” 文件

     

    3、在 CreateDll01.cpp 源文件中添加如下代码

     

    // CreateDll01.cpp : 定义 DLL 应用程序的导出函数。
    //
    
    #include "stdafx.h"
    
    extern "C" __declspec(dllexport) int TheAdd(int a, int b) {
    	return a + b;
    }
    
    extern "C" __declspec(dllexport) int TheSub(int c, int d) {
    	return c - d;
    }

    【注意】:

    • __declspec(dllexport)  表示这个函数需要导出到 dll 中供其他程序调用。
    • extern "C"  表示以C的格式进行导出(方便用C++以外的语言进行调用)。

    4、生成解决方案,来将其编译成对应的 dll 文件, dll 文件位于该项目的 Debug 目录中

      

       

     


    二、C#对 .dll 文件的调用介绍

    1、每种编程语言调用DLL的方法都不尽相同。在C#调用DLL中,首先需要了解什么是托管,什么是非托管。一般可以认为:非托管代码主要是基于win 32平台开发的DLL,activeX的组件,托管代码是基于.net平台开发的。

    2、C#调用 DLL 非托管代码的方法:

    (1)、应该在C#语言源程序中声明外部方法,其基本形式如下:

    [DLLImport(“DLL文件名”)]
    修饰符 extern 返回变量类型 方法名称 (参数列表)
    
    eg:
    
    [DllImport("CreateDll01.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern int TheAdd(int a, int b);
    

    (2)、用法总结

    DLL文件名:要调用的外部库文件名或该文件路径,其中包含待调用的方法。
    修饰符: 访问修饰符,除了abstract 以外在声明方法时可以使用的修饰符。
    返回变量类型:要和 DLL文件中你需调用方法的返回值类型相同。
    方法名称:在DLL文件中你需调用方法的名称(注意:该方法名称可以与 dll 文件中待调用的方法名称不同,此时需要在 DllImport() 中加上 EntryPoint 属性,让其值为DLL文件中你需调用方法的名称。相当于告诉该调用的函数入口点,然后就可以在下面的“方法名称 ”处重载该方法。若在   DllImport() 中没有 EntryPoint 属性,则需要调用的 “方法名称 ” 必须与 dll 文件中的函数名称相同 )
    参数列表:在DLL文件中你需调用方法的列表。
    注意:必需要在程序声明中使用 System.Runtime.InteropServices 命名空间。
    DllImport只能放置在方法声明上。
    DLL文件必须位于程序当前目录或系统定义的查询路径中(需要将生成的 DLL文件拷贝到当前程序的 bin\Debug 目录下)。
    返回变量类型、参数列表一定要与DLL文件中的定义相一致。

    DllImportAttribute 常用属性说明(详解):

    CallingConvention:指定用于传递方法参数的调用约定。 默认值为 WinAPI,该值对应于基于 32 位 Intel 的平台的 __stdcall。

    EntryPoint: 指定要调用 DLL 方法入口点。


    三、C# 调用 .dll 文件的实例

    1、创建一个新的控制台应用(.NET Framwork):CallTheDll01 . 注意:不能选择 “控制台应用(.NET Core)” ,选择该项时总是提示无法加载dll文件,使得调用 dll 文件失败。可能是由于“ 控制台应用(.NET Core)” 在VS中编译后默认无法生成 .exe 文件导致。

    2、接下来在C#的Program.cs 文件中的代码会有两种引入 DLL 文件的方式:

       **************引入方式一:拷贝 dll 文件到当前项目目录下,以 dll 文件名引入该文件******************

    (1)、该方式必须将之前用C++编译的 dll 文件复制到控制台应用的 bin\Debug 目录下,否则会提示错误

     

    (2)、在 Program.cs 文件中添加以下代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.InteropServices;
    
    namespace CallTheDll01
    {
        class Program
        {
            // 必须要有 CallingConvention.Cdecl,否则程序会报错
            [DllImport("CreateDll01.dll", CallingConvention = CallingConvention.Cdecl)]
            public static extern int TheAdd(int a, int b);
    
            // 若要让本程序中调用的函数名与DLL中的函数名不同,则需要在 DllImport()中添加 EntryPoint 属性
            // 同时 EntryPoint 属性值必须与DLL中被调函数的名称相同,以告诉该调用函数的入口位置
            [DllImport("CreateDll01.dll",EntryPoint ="TheSub", CallingConvention = CallingConvention.Cdecl)]
            public static extern int TestTheSub(int c, int d); //此时将被调函数的名称由TheSub重载为TestTheSub即可
            static void Main(string[] args)
            {
                Console.WriteLine("The answer of 2+8 = {0}", TheAdd(2, 8));
                Console.WriteLine("The answer of 8-2 = {0}", TestTheSub(8, 2));
                Console.ReadKey();
            }
        }
    }
    

     ****************引入方式二:通过 dll 文件的绝对路径来将该 dll 文件引入到控制台应用中***************

    (1)、通过绝对路径的方式,不需要将待调用的 dll 文件复制到当前控制台应用中。只需要给出该 dll 文件的绝对路径即可。使用该方式来引入 dll 文件非常方便修改和使用。

    (2)、在 Program.cs 文件中添加以下代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.InteropServices;
    
    namespace CallTheDll01
    {
        class Program
        {
            // 在此处使用 CreateDll01.dll 文件的绝对路径
            [DllImport(@"E:\Coding\C++\TheDLL\CreateDll01\Debug\CreateDll01.dll",CallingConvention=CallingConvention.Cdecl)]
            public static extern int TheAdd(int a, int b);
    
            // 由于上面已经使用了 CreateDll01.dll 文件的绝对路径,并且在下面的TheAdd(2, 8)处调用过该dll文件中的函数,所以
            // 在此处可以只写该 dll文件名,但为了保险起见,还是最好写待调用dll文件的绝对路径名
            [DllImport("CreateDll01.dll", EntryPoint = "TheSub",CallingConvention =CallingConvention.Cdecl)]
            public static extern int TestTheSub(int c, int d);
            static void Main(string[] args)
            {
                Console.WriteLine("The answer of 2+8 = {0}", TheAdd(2, 8));
                Console.WriteLine("The answer of 8-2 = {0}", TestTheSub(8, 2));
                Console.ReadKey();
            }
        }
    }

    3、点击 F5 运行结果如下:

       

    4、总结、注意:

    • 如果C# 调用的 DLL 文件是通过模块(.def)的方式来创建的(方法二:使用模块(.def)的方式来进行生成 .dll 文件),则可以在 .def 文件中的 EXPORTS 输出的函数名后面 @n,来指定各个函数的序号,以使其调用时让 EntryPoint 属性值用该序号来代替相应的函数名。如:[DllImport("CreateDll01.dll" , EntryPoint ="#2" , CallingConvention = CallingConvention.Cdecl)]

    参考资料:

    [1]  在C#中调用和调试C++代码

    [2]  C# 调用外部dll

    [3]  C#托管代码与C++非托管代码互相调用一

    [4]  C# 中调用dll

    [5]  利用C++创建DLL并C#调用

    展开全文
  • C# 调用dll文件

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

    万次阅读 多人点赞 2017-08-03 17:47:18
    该篇文章是对工作中一个需求的总结,工作需求是要将C语言的函数接口,生成一个DLL文件,让labview调用。然后我尝试用devc++开发工具来实现这个功能,后来因为DLL生成了,但labview调用的结果和C执行的结果不一致,...
  • 3、项目引用unity的dll文件 4、在unity中新建一个脚本test.cs 5、在类库项目中引入unity脚本文件 6、生成DLL文件 7、根据生成路径找到生成的DLL文件,添加到unity中,并将test脚本挂载到Main ...
  • 删除dll文件

    千次阅读 2014-04-21 19:05:29
    手工删除dll文件 dll动态链接表一般是其他程序调用,导致不能删除,如果是shanc
  • 如何手动运行dll文件,非注册dll

    万次阅读 2018-06-17 12:10:38
    遇到一个dll文件的恶意样本,cuckoo沙箱给出的运行命令如下:cd C:\Windows\System32\rundll32.exe C:\coreshell.dll,DllMain方法:rundll32.exe 文件位置,DllMainbut会弹出警告另外一种方法,在专家的文章中有提到...
  • 1、寻找dll文件的路径 public static string FindAssemblyPath(string assemblyName) { if (assemblyName.EndsWith(".dll") == false) { assemblyName = assemblyName +=
  • python DLL文件调用问题

    万次阅读 2018-12-29 13:40:42
    在网上搜索很多关于pythonDLL文件调用的问题,大多给出的都是DLL文件的编写,然后python调用,但是在调用中遇到的一些问题却很少有提及,下面将给出在python调用DLL文件时遇到的一些问题等。  ctypes官网:...
  • 打开dll文件时模块加载失败,请确保二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题 **打开dll文件时模块加载失败,电脑提示请确保二进制存储在指定的路径中,或者调试它以检查该二...
  • 一、代码封装成dll文件 步骤一:创建工程 图1:创建生成dll的工程 图2 图3 图4: 注意此处需要勾选QtCore,因为后面需要使用该库内QtCore/qglobal.h文件中的 Q_DECL_EXPORT 类 ...
  • 前几天我重新在C盘装了系统,之后发现D盘的软件不能用了,点击运行时,出现:.dll文件找不到了! 我用everything搜索了一下,发现系统盘C:\Windows\SysWOW64下有这个文件,同时的我的软件安装路径下也有这个文件。...
  • 近来学习制作Dll文件,看了几个视频教程,看了网上的例子,看了msdn上的例子。现在做个总结,以便来日回顾,同时也希望以大家相互交流学习。注意1:用 method 1 named "Using Load - Time Dynamic Linking"...
  • 解决DLL文件丢失

    千次阅读 2017-10-31 21:28:35
    计算机小白篇,解决计算机丢失xxx.dll文件的事情 前篇一律都是同样的解决的办法第一步看提示记住xxx.dll文件的名称第二步找到百度搜索,(如果嫌弃百度广告多可以选择其他搜索类型),搜索dll文件进行下载,不过要...
  • dll文件导出对应的lib文件

    千次阅读 2016-02-29 11:22:37
    在Windows平台上使用MSYS编译一些开源代码时经常只会生成DLL文件,而如果打算在VS中使用该DLL则需要有对应的LIB文件,下面以编译oRtp为例来看看如何从DLL文件中导出LIB文件。 需要进过两个步骤:由DLL文件生成def...
  • cs编译成DLL文件cs文件如何生成exe,dll文件以下是本人的制作过程:1.E盘下有一个Test.cs 文件。2.开始-》程序-》Microsoft Visual Studio 2005-》Visual Studio Tools-》Visual Studio 2005 命令提示3.命令提示...
  • Java调用dll文件

    千次阅读 2020-04-21 23:20:55
    近期根据C++做了一个图片质量检测的项目,目前需要在在java中进行调用,所以先在C++上生成dll文件,然后基于java调用dll文件实现功能。 环境: C++:VS2017(之前配置opencv真是要了老命) java:idea2020+jdk1.8。 ...
  • java动态加载dll文件

    千次阅读 2017-12-18 09:07:28
    * 过程:在项目中加入JNI(.dll)文件和对应的java类文件,选择build path->Source->Native library location->edit->选择.dll文件位置。 * 错误: (1)加载dll文件错误,未报错,但方法执行失败,这是dll文件位置...
  • c++中DLL文件的编写与实现——三步走

    万次阅读 多人点赞 2018-03-21 14:40:07
    动态链接库(Dynamic Link Library)DLL文件与EXE文件一样也是可执行文件,但是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文件的工程修改为生成...
  • 彻底删除顽固dll文件

    万次阅读 2017-09-19 21:03:43
    对于一些顽固的软件,在卸载之后会有残留的 dll 文件保留,而且这个 dll 文件并不能删除,有的会绑定到进程中(一般容易绑定到expore.exe进程中)随电脑开机一起启动,在删除文件的时候就会提示有程序占用(或服务在运行...
  • 将exe和dll文件打包成单一的启动文件 当我们用VS或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个方法教你如何快速把...
  • VS2019制作DLL文件

    千次阅读 2019-10-30 13:34:11
    用VS2019制作DLL文件的一般步骤很简单: 1创建新项目 2找到动态链接库DLL项目 3创建 4.分别在源文件和头文件添加相关函数f.cpp,f.h 第4步中,f.cpp没有主函数的各种自己的函数,f.h文件中是对应的头文件,不过...
  • vc制作DLL文件与调用DLL文件的方法

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

    千次阅读 2017-09-27 22:11:44
    前言记得很早之前有一个很流行的病毒,就是以...还有一次接触dll是在刚开始使用tomcat的时候,运行tomcat报错,但是可以成功启动tomcat,当时觉得非常奇怪,就上网查,说缺少一个dll文件,然后当时就去查了下dll文件是什
  • C++ dll库只生成dll文件,而未生成lib文件的问题逐项检查 逐项检查 新建项目时,选择应用程序类型为dll,并勾选“Export Symbols”; 属性-&amp;gt;链接器-&amp;gt;高级-&amp;gt;导入库 中定义输出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 550,494
精华内容 220,197
关键字:

dll文件