首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏张善友的专栏

    Mono PInvoke :DLLImport

    Mono 通过DLLImport 来描述.下面是一段示范代码: [DLLImport ("libc.so")] private static extern int getpid (); 当然别忘了添加名称空间 linux上DLLImport的搜索共享库顺序如下: 1、/lib,比如在/usr/lib 2、有绝大部分库文件都被缓存在 /etc/ld.so.cache中,该文件由 /etc/ld.so.conf 3、被用户环境变量LD_LIBRARY_PATH 标识的目录 相关文章: 如何利用C生成.so供Mono调用 C# DLLImport C++ dll 几点注意事项 Linux下给C#增加CopyMemory

    2.2K100发布于 2018-01-19
  • 来自专栏全栈程序员必看

    不能定义声明dllimport_不允许 dllimport 静态数据成员

    “CTest::~CTest” : 不允许 dllimport 函数 的定义 “CTest::CTest” : 不允许 dllimport 函数 的定义 //代码如下 template class __ 如果确实需要使用__declspec(dllimport),要注意VC规定: 数据、静态数据成员和函数可以声明,但不能定义为 dllimport。 说白了就是,声明和定义分别放在.h及.cpp文件中。 ,但不能定义为 dllimport。” 一般用于使用某个dll的exe中 不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。 原来dllimport是为了更好的处理类中的静态成员变量的,如果没有 静态成员变量,那么这个__declspec(dllimport)无所谓。

    2.8K21编辑于 2022-07-25
  • 来自专栏全栈程序员必看

    C# DllImport的用法

    答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。 2、DllImport具有单个定位参数:指定包含被导入方法的 dll 名称的 dllName 参数。    3、DllImport具有五个命名参数:    a、CallingConvention 参数指示入口点的调用约定。 5、此外,用 DllImport 属性修饰的方法必须具有 extern 修饰符。 DllImport的用法: DllImport(“MyDllImport.dll”)] private static extern int mySum(int a,int b); 一 在C#程序设计中使用

    1.5K10编辑于 2022-07-23
  • 来自专栏专业duilib使用+业余界面开发

    __declspec(dllexport)和__declspec(dllimport)

    头文件中声明了方法,在提供者那里方法应该被声明为__declspec(dllexport),在使用者那里,方法应该被声明为__declspec(dllimport)。 DLLProvider #define DLL_EXPORT_IMPORT __declspec(dllexport) #else #define DLL_EXPORT_IMPORT __declspec(dllimport __declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入。我要用。 一般用于使用某个dll的exe中 不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。 但是,必须使用 __declspec(dllimport) 才能导入 DLL 中使用的变量。

    2.2K70发布于 2018-05-24
  • 来自专栏全栈程序员必看

    C#中DllImport用法汇总

    答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。 DllImport是System.Runtime.InteropServices命名空间下的一个属性类,因此ASP.NET中要使用DllImport的,必须在先“using System.Runtime.InteropServices DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。 5、用DllImport属性修饰的方法必须具有extern修饰符。 首先我们用 [DllImport("kernel32.dll")] private extern static IntPtr LoadLibrary(String path); [DllImport("

    2.8K10编辑于 2022-07-25
  • 来自专栏全栈程序员必看

    c# dllimport(如何做笔记)

    先看个例子: using System.Runtime.InteropServices; [DllImport("kernel32")] private static extern int GetPrivateProfileString [DllImport("kernel32")] 这叫引入kernel32.dll这个动态连接库。 public string Value { get {…} } } ---- DllImport有如下特点: 1、DllImport只能放置在方法声明上。 2、DllImport具有单个定位参数:指定包含被导入方法的 dll 名称的 dllName 参数。 3、DllImport具有五个命名参数: 4、它是一次性属性类。 5、此外,用 DllImport 属性修饰的方法必须具有 extern 修饰符。

    97320编辑于 2022-07-28
  • 来自专栏c++ 学习分享

    无法解析的外部符号 “__declspec(dllimport)

    1>libboost_system-vc80-mt-1_55.lib(error_code.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) @H@Z) 中被引用 1>libboost_thread-vc80-mt-gd-1_55.lib(thread.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport UBEPBDXZ) 中被引用 1>libboost_thread-vc80-mt-gd-1_55.lib(thread.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport PBD@Z) 中被引用 1>libboost_thread-vc80-mt-gd-1_55.lib(thread.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport @@XZ) 中被引用 1>libboost_thread-vc80-mt-gd-1_55.lib(thread.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport

    2.7K20编辑于 2023-07-08
  • 来自专栏NetCore

    复制DllImport用的Dll文件到项目输出目录

    打开项目的csproj文件 添加如下代码 <ItemGroup> <None Remove="lib\xxx.dll" /> <Content Include="lib\xxx.dll"> <Link>xxx.dll</Link> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> </ItemGroup>

    1.4K10发布于 2020-12-09
  • 来自专栏acoolgiser_zhuanlan

    MFC(C++)中 __declspec(dllexport) 和 __declspec(dllimport)的作用

    blog.csdn.net/acoolgiser/article/details/99735282 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport )的作用 这段时间要把tinyxml从静态库弄成动态库,要用到__declspec(dllexport)和__declspec(dllimport)来导出dll和lib文件。 使用dll的工程在编译时也会将dll相关的头文件列入编译对象,而不会理会dll的cpp文件中的初始化过程,因此会出现a没有定义的情况,这时 __declspec(dllimport)就派上用场了,他会告诉使用 提供给别人使用的dll头文件应当写成: A2.h:   #define OS_API_IMPORT __declspec(dllimport)   class OS_API_IMPORT A {static 最终为了方便程序的开发,不用分别写出dll工程的头文件和使用dll工程的头文件,头文件可以写为如下形式: A.h    #define OS_API_IMPORT __declspec(dllimport

    1.8K10发布于 2019-08-29
  • 来自专栏王清培的专栏

    .NET简谈互操作(三:基础知识之DllImport特性)

    互操作系列文章: .NET简谈互操作(一:开篇介绍) .NET简谈互操作(二:先睹为快) .NET简谈互操作(三:基础知识之DllImport特性) .NET简谈互操作(四:基础知识之释放非托管内存 在互操作方面托管代码要注意的必不可少的代码申明,为我们下面的互操作打下基础; 在.NET平台里面开发我们还是很幸运的,微软为我们做了很多很方便的东西,我们只需要了解一下就能快速上手;在互操作里面我们只需要借助DllImport 特性 首先我们来了解一下DllImport代码特性,在进行互操作的时候,我们需要用DllImport来标识该方法是非托管的代码方法,在编译器编译的时候它能够正确的认识出被该特性标记的是外来代码段,所以能顺利的通过编译 特性的这几个属性具体什么意思;在DllImport构造函数里面有一个dllname的参数,请看图: 图1: 我们可以看到注释,这个构造函数的参数是非托管dll的名称,也就是我们所要用到的导入方法的具体位置 ;上图中的参数是 "Win32DLL.dll"字符串,也就是我们上篇文章中创建的非托管C++生成文件,在后面有几个相关属性,我们也逐一来解释; DllImport特性中的EntryPoint可选属性;

    98610编辑于 2022-03-14
  • 来自专栏walterlv - 吕毅的博客

    都是用 DllImport?有没有考虑过自己写一个 extern 方法?

    都是用 DllImport?有没有考虑过自己写一个 extern 方法? 这种 DllImport 标记的方法都带有一个 extern 关键字。 那么有没有可能我们自己写一个自己的 extern 方法呢?答案是可以的。本文就写一个这样的例子。 ---- DllImport 日常我们的平台调用代码是这样的: class Walterlv { [STAThread] static void Main(string[] args) 但如果你认为 DllImport 也是这么做的那就不对了。 还记得我们一开始写的 FindWindow 方法吗? ---- 参考资料 c# - How does DllImport really work?

    95320发布于 2018-09-18
  • 来自专栏转载gongluck的CSDN博客

    从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用

         这段时间要把tinyxml从静态库弄成动态库,要用到__declspec(dllexport)和__declspec(dllimport)来导出dll和lib文件。 使用dll的工程在编译时也会将dll相关的头文件列入编译对象,而不会理会dll的cpp文件中的初始化过程,因此会出现a没有定义的情况,这时 __declspec(dllimport)就派上用场了,他会告诉使用 提供给别人使用的dll头文件应当写成: A2.h:   #define OS_API_IMPORT __declspec(dllimport)   class OS_API_IMPORT A {static 最终为了方便程序的开发,不用分别写出dll工程的头文件和使用dll工程的头文件,头文件可以写为如下形式: A.h    #define OS_API_IMPORT __declspec(dllimport

    2.3K60发布于 2018-03-08
  • 来自专栏SnailTyan

    error LNK2001: 无法解析的外部符号 __declspec(dllimport) void __cdecl google::InstallFailureSignalHandle

    error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl google::InstallFailureSignalHandler(void

    1.9K10编辑于 2022-08-11
  • 来自专栏历史专栏

    【愚公系列】2023年04月 WPF运动控制平台-001.运动控制平台编程环境的搭建

    ")] public static extern short GT_GetCardNo(out short index); [DllImport("gts.dll")] public static extern short GT_GetVersion(out string pVersion); [DllImport("gts.dll") ] public static extern short GT_GetInterfaceBoardSts(out short pStatus); [DllImport(" GT_AlarmOn(short axis); [DllImport("gts.dll")] public static extern short GT_LmtsOn( [DllImport("gts.dll")] public static extern short GT_GetPosErr(short control, out int pError)

    1.3K40编辑于 2023-04-12
  • 来自专栏马洪彪

    身份证读卡设备-德卡科技

    (int t); [DllImport("winmm")] static extern void timeEndPeriod(int t); [DllImport("dcrf32 .dll")] public static extern short dc_init(Int16 port, int baud); //初试化 [DllImport("dcrf32.dll ")] public static extern short dc_exit(int icdev); [DllImport("dcrf32.dll")] public static dc_config_card(int icdev, char cardtype); //初试化 [DllImport("dcrf32.dll")] public static extern [DllImport("dcrf32.dll")] public static extern IntPtr dc_i_d_query_id_number(int handle); [DllImport

    1.1K21发布于 2021-04-12
  • 来自专栏TRTC

    C#调用即时通信IMSDK

    uint message; public int wParam; public long lParam; public uint time; public int pt;}[DllImport public static extern int GetMessage(out tagMSG lpMsg,IntPtr hwnd,int wMsgFilterMin,int wMsgFilterMax);[DllImport user32", EntryPoint = "DispatchMessage")]public static extern int DispatchMessage(ref tagMSG lpMsg);[DllImport 比如说 :[DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]public extern static int TIMInit(long sdk_app_id, string json_sdk_config);最好用IntPtr来接受const char*:[DllImport

    4.1K60编辑于 2022-08-08
  • 来自专栏施炯的IoT开发专栏

    使用Windows Embedded Source Tools for Bluetooth Technology简化蓝牙开发

    主要包括:       CE Bluetooth Radio Functions:  1          [DllImport(BTHUTIL_DLL)]  2  3 public static extern int BthGetMode(ref BluetoothRadioMode mode);  4  5  6  7          [DllImport(BTHUTIL_DLL) BTDRT_DLL)]  8  9 public static extern int BthRevokePIN(byte[] btAddr); 10 11 12 13          [DllImport (WINSOCK_DLL)]  8  9 public static extern int WSACleanup(); 10 11 12 13          [DllImport(WINSOCK_DLL  WSALookupServiceBegin(byte[] querySet, int flags, ref int lookupHandle); 16 17 18 19          [DllImport

    1.1K100发布于 2018-01-11
  • 来自专栏啄木鸟软件测试

    借助API实现黑盒自动化测试工具的编写

    ("user32.dll")]   public static extern int AnyPopup();   [DllImport("user32.dll", CharSet = CharSet.Auto )]   public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);   [DllImport dll")]   public static extern int EnumThreadWindows(IntPtr dwThreadId, CallBack lpfn, int lParam);   [DllImport dll")]   public static extern int EnumChildWindows(IntPtr hWndParent, CallBack lpfn, int lParam);   [DllImport   public static extern IntPtr SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);   [DllImport

    84530发布于 2021-07-22
  • 来自专栏TSINGSEE青犀视频

    如何使用WPF用户界面框架编译EasyPlayPro-Win版本网页无插件视频播放器?

    )] static extern int EasyPlayerPro_Authorize(string license); [DllImport("libEasyplayerpro.dll", EntryPoint EASY_STREAM_LINK_MODE link_mode, int speed, int valume, int probesize, int max_analyze_duration); [DllImport CallingConvention = CallingConvention.Cdecl)] static extern void EasyPlayerPro_Play(IntPtr player); [DllImport CallingConvention.Cdecl)] static extern void EasyPlayerPro_Seek(IntPtr player, System.Int64 ms); [DllImport EasyPlayerPro_Close 关闭播放 // player - 指向 EasyPlayerPro_Open 返回的 player 对象 [DllImport

    90330发布于 2021-03-02
  • 来自专栏liulun

    使用WINAPI安装Windows服务[转]

    [dllimport("advapi32.dll")] public static extern intptr openscmanager(string lpmachinename , string lpscdb, int scparameter); [dllimport("advapi32.dll")] public static extern intptr ("advapi32.dll")] public static extern void closeservicehandle(intptr schandle); [dllimport ("advapi32.dll")] public static extern int deleteservice(intptr svhandle); [dllimport ("kernel32.dll")] public static extern int getlasterror(); #endregion dllimport

    74940编辑于 2022-05-09
领券