Bir 'Herhangi bir CPU 86 CLR' kuvvet .NET derleme
.'Platform Hedef:' derleyici seçeneği sağlar .Herhangi bir CPU NET NET Meclisi 64 bir makinede 64 bit ve x 86 makinede 32 bit olarak çalıştırmak için. Aynı zamanda bir derleme x 64 makine 'Platformu Hedef: 86' derleyici seçeneği. kullanarak 86 olarak çalışmaya zorlamak için
"Herhangi bir CPU' bayrak, ama 86 ya da x 64 CLR çalıştırılabilir olup olmadığını belirlemek? ile derleme çalıştırmak mümkün Normalde bu karar, temel sistem verileri temel CLR/OS Loader benim anladığım gibi) tarafından yapılır.
C yazmaya çalışıyorum# .NET uygulama (okuma: kod enjekte) diğer çalışan süreçleri ile etkileşim. 64 süreçleri yalnızca diğer işler x 64 ve 86 ile aynı içine enjekte edebilir. İdeal olarak, TAM zamanında derleme ve yararlanmak istiyorumHerhangi bir CPUseçeneği tek bir uygulama ya da x 64 veya 86 süreçleri içine enjekte etmek için kullanılır (64 makinede).
Fikir uygulama olarak derlenmiş olurHerhangi bir CPU. 64 makinede 64 bit olarak çalışır. Hedef x 86 süreç olarak kendini çalıştırmak için CLR zorlayarak yeniden başlatmasını gerektiğini 86, ise. Bu mümkün mü?
CEVAP
Uygulamayı çalıştırmak ve statik olarak ne kadar değişir CorFlags uygulamayı kullanarak bulabilirsiniz. Uygulamanın nasıl çalışacağını öğrenmek için, kullanın:
corflags <PathToExe>
Uygulamanın nasıl çalışacağını değiştirmek için kullanın:
corflags /32bit <PathToExe>
Bu EXE dosyası 32-bit işlem olarak çalışır. Meclis çalışmalıdır hakkında bilgi PE başlığında depolanır. Yığın Taşması soru bakınHow to find if a native DLL file is compiled as x64 or x86?.
Eğer çalışma zamanında kod enjekte etmek istiyorsanız, C /COM .NETBir profiler yazmak zorunda. Bakın.NET Internals: The Profiling APIveProfiling (Unmanaged API Reference)daha fazla bilgi için.
JitCompilationStarted geri arama uygulamak ve orada iş yapmak gerekir. Eğer bu yönde iseniz, enjekte DLL DOSYASı, hem x 86 ve x 64 inşa etmek gerekir. Yerel DLL dosyaları aşağıdaki ortam değişkenleri ayarlanır bir kez CLR yüklenmiş olur:
Cor_Enable_Profiling=0x1
COR_PROFILER={CLSID-of-your-native-DLL-file}
Eğer 64-bit sürümü olacak '' 64 bit işlemleri ve 32-bit sürümü olacak '" 32-bit işler. bu doğru o zaman ayarladıysanız
Güncellemelerinden herhangi bir proje ...
Neden herhangi bir parametre (asıl fon...
CSS3 calc ile daha az Agresif Derleme...
Uzaktan Linux makine üzerinde C - &quo...
Could not load dosya veya derleme Sist...