2012-07-06 205 views
0

我想在C#中創建一個DLL,但我需要知道在將某個進程注入時調用的主要方法名稱是什麼。如何在C#中創建DLLMain

例如,DLLMainC++

+10

沒有這樣的事情存在。 – leppie 2012-07-06 08:20:52

+0

另外請注意,可以說,'DllMain()'(由於加載程序鎖定問題)的大多數用法[有缺陷](http://www.voyce.com/index.php/2009/12/03/dont-無論如何do-anything-in-dllmain-please /)或[危險](http://blogs.msdn.com/b/oldnewthing/archive/2004/01/28/63880.aspx)。也許你想告訴我們你實際上想要達到的目標。 – 2012-07-06 08:23:43

+0

好吧,我想附加一個DLL到一個進程和DLL正在做一個例程檢查一些文件,如果他們存在等..,我想DLL應該有一個主要的方法在哪裏執行代碼 – Jax 2012-07-06 08:25:20

回答

2

即使它已經4歲了,我也會回答這個問題,以便有一個正確的答案。

雖然你可以使用LoadLibrary或類似的調用使用P/Invoke,.NET的DLL管理的DLL的無法在非託管環境中使用,使用.NET託管DLL。簡單地提供通常的DLL函數,然後從Delphi,C++等中使用它,實在沒有辦法。

可以做的是創建一個COM-DLL。在.NET中這很容易,在註冊DLL之後,您可以使用COM中其他語言在DLL中定義的類。

你也可以嘗試使用C++混合模式創建一個包裝器DLL,但是到目前爲止我還沒有這樣做,因爲我對C++沒有太多的瞭解。您可能能夠使用非託管應用程序中的非託管部分,並讓它調用託管部分。