c#创建和附加DLL到项目
本文关键字:DLL 项目 创建 | 更新日期: 2023-09-27 18:12:28
我想在c#中创建一个类库项目,并将其附加到一个进程。
我已经在c++中做过了,我的代码是
#include <windows.h>
void Thread()
{
// here i just do my stuff
}
int WINAPI DllMain(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
if(reason==DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Thread, 0, 0, 0);
}
return 1;
}
这个很适合我。
可以在c#中做到这一点吗?
谢谢,我希望我能找到一个答案并接受它。
c#没有DllMain
这样的机制,当你从可执行文件中引用或使用代码时,你可以执行代码。可执行文件需要显式地调用(或至少使用)库中的类型的方法,以便代码执行。
如果你知道你的库中的一个类型将被使用,然而,你可以"欺骗"并通过将它放在该类型的静态构造函数中来启动你的线程。这将导致它在第一次使用该类型时或之前执行。
话虽这么说,如果你正在编写要使用这个c#库的exe,你可以在一个类型上调用一个方法来开始你的线程并开始你的工作。
跟着这里的讨论。
给你的类一个静态构造函数并在那里进行初始化。它将在任何人第一次调用静态方法或属性时运行或构造类的实例。
好像你可以使用模块初始化器。不幸的是,c#不支持它们。您必须注入IL,例如使用模块初始化器或Fody