c#创建和附加DLL到项目
c# create and attach dll to project
我想在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
相关文章:
- 从现有源创建 MS Visual C++ DLL 项目
- 如何从 DLL 项目调用 C# 项目函数C++
- 无法添加对WINRT C DLL项目的参考
- DLL项目应该是跨平台使用的类型
- DLL 项目上的 VC++ 编译错误
- 在Visual Studio 2010的dll项目中包括Qt工具
- 如何在 win32 中使用 ActiveX dll C++项目 Visual Studio 2010
- DLL 项目中C++未解析的外部符号
- 尝试在与我的 EXE 项目相同的解决方案中引用 DLL 项目时,出现错误"无法打开包含文件:"iostream"
- 在 Visual Studio 2015 的 dll 项目中包括自己的资源文件时出现链接器错误Microsoft
- 更改 dll 项目的输出目录
- 在 DLL 项目中使用 STL C++
- 其中是调试信息(断点等)存储在本机C++dll项目VS2013中的位置
- 在碳化物2.7中调试exe和dll项目
- 将外部dll项目用于Excel的c++/xll加载项
- MinGW DLL项目与linux的兼容性
- 如何在visual studio中获得DLL项目来更新每个构建的c++项目
- 如何将c++ dll项目添加到Visual Basic引用中
- 在DLL项目中定义了具有Cryptopp_DEFAULT_NO_DLL的LNK1104 Cryptopp.lib
- Windows上的DLL项目:未解析的外部符号