关于DllImport

问题描述

[DllImport(“MyDLL.dll")]//返回个int类型publicstaticexternintmySum(inta1,intb1);请问各位专家,怎么把"MyDll.dll"用变量代替?方便二次封装.

解决方案

解决方案二:
我印象中,只能attribute中只能使用conststring[DllImport(DllName,CharSet=CharSet.Unicode)]publicstaticexternintmySum(inta1,intb1);privateconststringDllName="MyDLL.dll";如果要动态改变,估计得动态载入dll参考下面讨论中的LoadLibrary,GetProcAddress和FreeLibrary部分
解决方案三:
属性的东西,在编译的时候必须确定下来。所以不可以用其它的变量,但是可以用常量这些。如果你想二次包装,可以为每一个DLL编写一个C#类,这样不就达到你二次封装的目的了吗。
解决方案四:
还是动态载入合适点

时间: 2024-08-15 21:18:50

关于DllImport的相关文章

关于C#中的DLLImport

MSDN中对DllImportAttribute的解释是这样的:可将该属性应用于方法.DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息.作为最低要求,必须提供包含入口点的 DLL 的名称. 并给了一个示例: [DllImport("KERNEL32.DLL", EntryPoint="MoveFileW",  SetLastError=true, CharSet=CharSet.Unicode, ExactSpelli

VB.NET特性---- Dllimport特性

我们可以使用Declare语句调用外部DLL中的过程.但VB.NET给我们提供了另外一种更加先进的----- Dllimport特性. 如: Imports System.Runtime.InteropServices <DllImport("user32")> _ Function Findwindow(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer End Function &l

definition of dllimport function not allowed 错误的解决

definition of dllimport function not allowed 不允许dllimport函数的定义 本应该是导出,结果写成导入了,就会出现这个问题 改为:dllexport 问题解决. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/vc/

关于C#如何使用Prodave(实战DllImport)

严格意义上讲,此文不算OPC的范畴.起因是,另一个项目的PLC强人说,OPC慢,用prodave吧,好,用就用吧,装好Prodave看是看其英文 资料,虽然英文不好,但好在这里英文很简单.好了,上网查了点资料,这里还要感谢几个朋友的帮忙,让我对于C#与C++的数据结构有了更进 一步的认识,也学会了使用DllImport在本文的开头,我要说明下,Prodave是西门子的通信方式,即使我提供了Prodave6.dll,您不注册也是 没用用的,所以请使用西门子的安装程序,哪里下载?自己百度一下.不要来

c++-__declspec(dllimport)怎么看它的定义在哪里?或者是从哪里引入的?

问题描述 __declspec(dllimport)怎么看它的定义在哪里?或者是从哪里引入的? 头文件中local.h中有如下定义: __declspec(dllimport) WORD WINAPI PrintScreen(HWND,WORD,WORD,WORD,LPSTR,BOOL) .c中一个dllexport函数中有调用它,PrintScreen这个函数是从别的dll引入的吗?如果是,如何看是从哪里引入的? 解决方案 declspec(dllimport)是指从其他dll引入, __de

接口-C# dllimport C# 自己的DLL,这样可以码,如果可以,该DLL怎样写呢

问题描述 C# dllimport C# 自己的DLL,这样可以码,如果可以,该DLL怎样写呢 我有个老项目,是用C++写的DLL,主程序为C#,没源码,已经知道C++DLL的接口入口和参赛,想在主程序调用该C++DLL时再套一层C#接口,必须使用dllimport C#DLL,请问该C#DLL如何编写 解决方案 就是dllimport,你不是都知道了吗,把参数类型匹配对就行了 解决方案二: 类似 [DllImport("user32.dll", EntryPoint="Me

C# DLLIMPORT 相对路径 问题

问题描述 现在我有一个程序,都是和设备打交道的,比如现在有三个厂家,他们都提供了厂家DLL封装库,但是各个厂家之间比较懒,DLL名字都是同一个Changjia.dll,那么现在问题来了,我如何在目录下面建子目录区分不同厂家的dll文件并且保证DLLIMPORT时可以找到对应的厂家dll. 解决方案 解决方案二:都没人吗?解决方案三:你重命名文件嘛--两个相同的文件改不同的名字,一般都是放在bin目录下,有些可能还需要放在system32下面

param-通过dllimport改变音量参数的问题

问题描述 通过dllimport改变音量参数的问题 [DllImport("user32.dll")] private extern static IntPtr SendMessage(IntPtr handle, uint message, uint param, uint sount_mute); 问题来了:请问其中的五个参数都代表什么意思,请详细解答 解决方案 参考http://msdn.microsoft.com/zh-cn/magazine/ms646275(en-us,VS

C#使用DllImport调用非托管的代码的方法_C#教程

找到GetShortPathName的方法签名, DWORD GetShortPathName(LPCTSTR tpszLongPath,TPTSTR lpszShortPath,DWORD cchBuffer): 非托管及托管数据类型对应关系: LPCTSTR         String LPTSTR           StringBuilder DWORD          int DllImport的导入规则: 1.方法名与Win API完全一样.如果在C#中调用时显示完全不同的方法名

对于c# 调用c++ dll,用dllimport 方法,怎么同时调试,断点设好,跳不进c++ dll

问题描述 请教,这个问题急人啊 解决方案 解决方案二:dllimport这种方式调试没试过,引用dll可以调试,前提是dll是Debug方式编译的解决方案三:C#项目启用本机调试.解决方案四:试下改为本机调试···