-1
有沒有什麼辦法可以從c#代碼中調用c代碼?從C#運行C代碼#
我已經讀了很多微軟的文檔中,我已經試過這種方式暫時:
Process proc = new Process();
proc.StartInfo.WorkingDirectory = "path-to-C-code";
proc.StartInfo.FileName = "C-code-name";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
Console.WriteLine(proc.StandardOutput.ReadToEnd());
proc.WaitForExit();
但顯然是行不通的。
此字符串保持空不管我做什麼proc.StartInfo.FileName
這是C代碼的代碼是過程殺死自理。
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[], char *env[]) {
int value1;
int value2;
srandom(time(NULL));
switch (random() % 7) {
case 0:
exit(random() % 10);
break;
case 1:
value1 = value1/(value2 - value2);
break;
case 2:
kill(getpid(), SIGKILL);
break;
case 3:
alarm(random() % 60);
break;
case 4:
__asm__("sti");
break;
case 5:
value1 = *((int*) NULL);
break;
default:
break;
}
return 0;
}
在此先感謝您。
什麼是 「顯然是行不通的」 呢?錯誤?還有別的嗎? –
無論我做什麼,這部分proc.StartInfo.FileName始終是一個空字符串,所以它只是不運行代碼。 –
您是否試圖執行C源代碼?或者是實際的可執行文件(在這種情況下,寫入哪種語言並不重要,因爲它已被轉換爲機器指令)?或者你想做一些互操作(在這種情況下,PInvoke可能會讓你感興趣)? – UnholySheep