C#如何支持导出Windows标准32位动态链接库

九江月charm 2016-01-18 01:53:29
有谁知道RGiesecke.DllExport到底是什么东西?
怎么用的,到底是什么原理啊?
不是说原生不支持导出的吗?
在加了一个第三方库之后
[DllExport()]到底干了什么?
[/code]

using System;
using System.Collections.Generic;
using System.Linq;
using RGiesecke.DllExport;//关键是这个第三方库,到底怎么搞的?
using System.Runtime.InteropService
using System.Threading;

namespace Demo
{
static class Program
{
static Int32 AuthCode;

[return: MarshalAs(UnmanagedType.LPStr)]
[DllExport()]
public static String AppInfo() {
return "9,wtf.demo.echo";
}

[DllExport()]
public static Int32 Initialize(Int32 authCode)
{
AuthCode = authCode;
return 0;
}

[DllExport()]
public static Int32 eventStartup()
{
NativeMethods.CQ_addLog(AuthCode, 10, "什么鬼", "你好,这里是木馨!");
return 0;
}

[DllExport()]
public unsafe static Int32 eventPrivateMsg(Int32 subType, Int32 sendTime, Int64 fromQQ, [MarshalAs(UnmanagedType.LPStr)] String message, Int32 font)
{
string x = message;
ThreadPool.QueueUserWorkItem(delegate(Object _)
{
NativeMethods.CQ_sendPrivateMsg(AuthCode, fromQQ, x);
});
return 0;
}

}
}

...全文
232 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhui389 2019-04-20
  • 打赏
  • 举报
回复
这一类的教程真的是非常的少 .

Only static methods can be exported.

看样子只支持静态类 静态方法的 导出 . 不过这功能也很不错了.很强大.

至于我楼上说的EasyHook ,其实是另外一种实现原理了,我也研究了一下,大致测试成功了.

EasyHook 和 DllExport 都是可以解决C#远程钩子注入的方法.
各有优缺点吧.有空我抽时间整理资料发一篇教程吧.
蒋晟 2016-01-18
  • 打赏
  • 举报
回复
可以反汇编之后重新编译 不过用C++/CLI就可以做的事情为啥要用没有经过广泛测试的第三方库?
Justin-Liu 2016-01-18
  • 打赏
  • 举报
回复
bing搜索一下这个dll
本拉灯 2016-01-18
  • 打赏
  • 举报
回复
NUGET上就有, 不光光只是引用这个DLL的,你还要装VS插件的,然后还要改写项目的工程配置,才行的, 这个麻烦的很,不建议用这个
引用 3 楼 crystal_lz 的回复:
C#? 标准 win32动态链接库?你在逗我。。。
楼主说的那个插件是可以导出标准的DLL,他相当于把C# 的DLL打包重新封装成C++的DLL了 然后暴露出C++的函数。 在EasyHook上就有用到这个东西
crystal_lz 2016-01-18
  • 打赏
  • 举报
回复
C#? 标准 win32动态链接库?你在逗我。。。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧