dll文件

Windows 10下程序启动时Android studio出现0xc000007b错误的解决方案

余生颓废 提交于 2019-12-23 10:48:34
Windows 10下程序启动时Android studio出现0xc000007b错误的解决方案 背景介绍 查找解决方案过程 解决办法 背景介绍 本人电脑是Windows 10,是从Windows 7免费升级的版本,之前安装了Android Studio ,打算自学Android 开发,断断续续一直用得好好的。后来在电脑上安装了Outlook 2019 之后,有段时间没有使用Android Studio了。直到某一天准备继续学习Android 开发时,Android Studio 竟然无法运行,出现了 0x000007b 的启动错误。 查找解决方案过程 在百度上搜索了几天,发现出现这个错误的应用程序有各种各样,主要以游戏程序居多,主要解决方案主要有以下几类: 1、使用 Directx 修复工具修复缺少的DLL。于是在网上下载了最新版的Directx 修复工具3.9 加强版,并且选用了C++强力修复和Api Sets 强力修复,修复完成后重启电脑。不出意外地Android Studio还是继续出现 0x000007b 的错误。 2、官网下载Microsoft Visual C++ Redistributable 。从 Microsoft Visual C++ 2005 到 2019 安装个遍。实际上安装的有 2005、2008、2010、2012、2013、2015-2019

asp调用.net dll

亡梦爱人 提交于 2019-12-22 13:00:30
1. 在.net Visual Studio 中新建一个Class项目。 2. 在项目中新添加一个类,代码如下: using System; namespace ClassLibrary1 { //定义接口,这点很重要 (此接口中的方法与COM组件中的方法一致) public interface iClass1 { string test() ; } public class Class1 : iClass1 { private string t = ""; //实现接口中的方法 public string test() { return "ok"; } } } 3. 修改Properties目录下面的AssemblyInfo.cs 的 ComVisible属性设置为True 4. 项目菜单->MyLib属性,找到“生成”选项卡,找到“为 COM Interop 注册”勾上 5. 继续往下,找到“签名”选项卡,勾上“为程序集签名,在下面的下拉框里面选择“<新建...>” 6. 在弹出的对话框里面,输入"MyLib"(名字随便),去掉使用密码保护文件的选项 7. 右键打开VS的命令提示符 8. 编译(生成) 在命令提示符下面,进入Dll所在的目录 用 gacutil /i ClassLibrary1.dll 将这个DLL加入的全局缓存里 然后用 regasm

Asp.NET调用C++写的dll

只愿长相守 提交于 2019-12-22 13:00:18
最近继续用asp.Net来重新开发ACM的online Judge系统,因为要进行进程的监控,所以自己编写了一个非托管的DLL供asp.Net调用。   我用的是VS2005的开发环境,后来发现使用[DllImport("Judge.dll")]后提示 无法加载 DLL “Judge.dll” 找不到指定的模块!我这时就把Judge.dll拷贝到Bin目录下,但仍然提示找不到DLL,在工程里添加DLL引用的时候,发现添加这个非托管DLL就会令VS2005异常退出(上网搜索后也发现有人有相同的问题)。   后来发现用[DllImport(@"C:\OJ\Bin\Judge.dll")]这样指定DLL的绝对路径就可以正常装载。   这里还有一个解决办法.Net/thread/1121085.aspx">http://forums.asp.Net/thread/1121085.aspx   这个问题最常出现在使用第三方非托管DLL组件的时候,我的也同样是这时出的问题,asp.Net Team的官方解决方案如下:   首先需要确认你引用了哪些组件,那些是托管的,哪些是非托管的.托管的很好办,直接被使用的需要引用,间接使用的需要拷贝到bin目录下.非托管的处理会比较麻烦.实际上,你拷贝到bin没有任何帮助,因为CLR会把文件拷贝到一个临时目录下,然后在那运行web,而CLR只会拷贝托管文件

delphi 基础之三 编写和调用dll文件

╄→гoц情女王★ 提交于 2019-12-22 08:44:21
delphi 编写和调用 dll 文件 Windows 的执行文件可以划分为两种形式程序和动态连接库 (DLLs)。一般程序运行是用.EXE文件,但应用程序有时也可以调用存储在DLL的函数。 在如下几种情况下,调用DLL 是合理的: 1) 不同的程序使用相同的DLL ,这样只需要将DLL 在内存中装载一次,节省了内存的开销。 2) 当某些内容需要升级的时候,如果使用DLL 只需要改变DLL 就可以了,而不需要把整个程序都进行变动。 3) 由于DLL 是独立于语言的,所以,当不同语言习惯的人共同开发一个大型项目的时候,使用DLL 便于程序系统的交流,当然,Delphi开发的DLL 也可以在诸如Visual BASIC,C++ 等系统中使用。 下面通过几个例子,说明Delphi开发动态连接库的方法和规范。 第一节 动态连接库的构建和调用方法 一、动态连接库构建 1.创建了一个动态连接库的基本模块 File---New---Other---DLL Wizard library Project1; {如果DLL输出的过程或函数带有长字符类型的参数,或者函数返回类型是长字符串或带有长字符串元素的构造类型,Object Pascal规定无论是DLL还是调用它的程序必须把ShareMem单元加到Uses部分。而ShareMem单元是从DelphiMM.DLL这个DLL中引入的接口单元

Delphi调用DLL出现错误:Invalid pointer operation

空扰寡人 提交于 2019-12-22 08:42:29
DLL中的函数返回string类型,在Delphi中动态调用时可以得到正确结果,在关闭程序是提示错误:Invalid pointer operation 在网上搜索了一圈,均指向内存泄露,以及下面的解决方法:   Windows中如果一个动态库导出函数以参数形式传递或者返回了一个长字符串或者 动态数组(无论是直接传递还是包含在一个对象中),那么动态库以及其调用程序都必须得引用ShareMem单元。同样,如果程序或者库通过New或者 GetMem申请了内存,并且该内存在另一个模块中通过Dispose或FreeMem释放,也得这么做。务必把ShareMem放在程序或者库所有引用 单元之首。   ShareMem是BORLANDMM.dll内存管理单元接口,它允许模块间共享动态申请内存。BORLANDMM.dll必须与使用了改单元的程序或者Dll一块儿部署。当程序或者动态库使用了ShareMem,其内存管理将会由BORLANDMM.dll接管。 注意:在dpr文件的uses语句的开头加上ShareMem,以及DLL中的uses语句开头加上ShareMem。 来源: https://www.cnblogs.com/fred-rk/archive/2012/12/16/2820836.html

Dll创建一个\"日历\"窗体(一)

丶灬走出姿态 提交于 2019-12-22 08:40:02
首先点击File->New->Other-> Dynamic Link Libary 把工程文件保存为:CalendarLib.pas 再创建一个Form并放入一个TMonthCalendar控件 borderStyle属性设为:bsToolWindow 保存为 DllFormUnit.pas unit DllFormUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls; type TDllForm = class(TForm) MonthCalendar1: TMonthCalendar; procedure MonthCalendar1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var DllForm: TDllForm; // 供外部调用函数 function ShowCalendar(AHandle: THandle;ACaption: String):PChar;stdcall; implementation {$R *.dfm} function

Using C# from native C++ with the help of C++/CLI

爷,独闯天下 提交于 2019-12-21 20:06:59
一、新建一个C#类,生成DLL文件 //-----CSharpDLL--- class CSharpDLL { CSharpDLL ( ) { } ~ CSharpDLL ( ) { } void Add ( ) { } } //----- 二、创建一个新C++类调用C# DLL,并重新生成DLL供C++调用, (项目属性设置成支持公共语言运行时支持(/clr)) //TESTWRAPPERAPI_EXPORTS 需要添加到工程“预处理定义”里面 # ifdef TESTWRAPPER_API_EXPORTS # define TESTWRAPPER_API __declspec(dllexport) # else # define TESTWRAPPER_API __declspec(dllimport) # endif # include <iostream> # include <msclr/auto_gcroot.h> using namespace System ; using namespace System :: Reflection ; class TestWrapperPrivate { public : msclr :: auto_gcroot < CSharpDLL ^ > csharp ; } ; class TESTWRAPPER_API

编写DLL

家住魔仙堡 提交于 2019-12-21 09:03:47
想想还是把这个记录下吧,虽然不难,但由于平时写得不多,老是搞忘了。 1、我们来编写一个简单的DLL程序。 首先,我们来看下入口函数DllMain()。DllMain()有3个参数: (1)hModule:DLL模块的句柄。 (2)ul_reason_for_call:DllMain函数被调用的原因。其取值有4种,分别是DLL_PROCESS_ATTACH(当DLL被某进程加载时DllMain被调用)、DLL_PROCESS_DETACH(当DLL被某进程卸载时DllMain被调用)、DLL_THREAD_ATTACH(进程中有线程被创建时DllMain被调用)、DLL_THREAD_DETACH(进程中有线程结束时DllMain被调用)。 (3)lpReserved:保留项。 函数前面的APIENTRY是一个宏,定义如下: #define APIENTRY WINAPI WINAPI也是一个宏,表示一种函数调用约定。 我们需要对DllMain()进行一下填充,加个switch。后面详见例子。我们还需要为之添加一个简单的导出函数。该函数定义如下: extern "C" __declspec(dllexport) VOID MsgBox(char *szMsg); extern "C"表示该函数以C方式导出。 其实现如下: VOID MsgBox(char *szMsg){ char

C#学习笔记-----基于AppDomain的\"插件式\"开发

烈酒焚心 提交于 2019-12-21 04:53:58
很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统,这个WinService系统管理的形形色色各种各样的服务,这些服务也是各个"插件式"的类库,例如: public interface IJob { void Run(DateTime time); } public class CollectUserInfo : IJob { public void Run(DateTime time) { //doing some thing... } } 我们提供了一个IJob接口,所有"服务"都继承该接口,然后做相关的配置,在服务启动时,就可以根据配置,反射加载程序集,执行我们预期的任务. 更新程序集(dll/exe) 服务/插件程序( 后面只称为服务,虽然两者应用不同,但是在此处他们所运用的原理和作用是相同的 :-) )很健稳的运行着.但在服务/插件程序运行一段时间之后,某些"插件"的业务需求发生的变化,或者版本升级等种种外部原因,导致我们对原本的"插件"程序集进行了升级(可能从v1.0升级至v2.0).当我们想像Asp.net应用一样.把新的dll替换旧dll的时候,错误发生了. 发生该错误的原因很简单,因为我们的程序中已经调用了该dll

基于 AppDomain 热插拔 \"插件式\" 技术开发

折月煮酒 提交于 2019-12-21 04:53:17
很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统,这个WinService系统管理的形形色色各种各样的服务,这些服务也是各个"插件式"的类库,例如: public interface IJob { void Run(DateTime time); } public class CollectUserInfo : IJob { public void Run(DateTime time) { //doing some thing... } } 我们提供了一个IJob接口,所有"服务"都继承该接口,然后做相关的配置,在服务启动时,就可以根据配置,反射加载程序集,执行我们预期的任务. 更新程序集(dll/exe) 服务/插件程序( 后面只称为服务,虽然两者应用不同,但是在此处他们所运用的原理和作用是相同的 :-) )很健稳的运行着.但在服务/插件程序运行一段时间之后,某些"插件"的业务需求发生的变化,或者版本升级等种种外部原因,导致我们对原本的"插件"程序集进行了升级(可能从v1.0升级至v2.0).当我们想像Asp.net应用一样.把新的dll替换旧dll的时候,错误发生了. 发生该错误的原因很简单,因为我们的程序中已经调用了该dll