2012-11-14 34 views
1

我試圖編譯一個很簡單的MPI程序hello_world編譯:,我無法用MPI編譯器使用C++

#include <stdio.h> 
#include <mpi.h> 

int main(int argc, char *argv[]) { 
    int numprocs, rank, namelen; 
    char processor_name[MPI_MAX_PROCESSOR_NAME]; 

    MPI_Init(&argc, &argv); 
    MPI_Comm_size(MPI_COMM_WORLD, &numprocs); 
    MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
    MPI_Get_processor_name(processor_name, &namelen); 

    printf("Process %d on %s out of %d\n", rank, processor_name, numprocs); 

    MPI_Finalize(); 
} 

,得到了以下問題:

Catastrophic error: could not set locale "" to allow processing of multibyte characters 

我真的不知道如何弄清楚。

+0

錯誤消息是否提供文件名和/或行號?您的源文件中是否包含非ASCII字符?你的源文件是用UTF-16編碼的嗎? –

+0

這是編譯器錯誤嗎?它來自哪條線?還是運行時錯誤,大概是由'MPI_Get_processor_name'產生的,因爲這是唯一一個處理字符串的東西?如果你刪除字符串的東西,它會消失嗎? – hyde

+0

你在Mac OSX上?他們遇到了語言環境不可用的問題,IIRC – sehe

回答

5

嘗試定義環境變量

LANG=en_US.utf8 
LC_ALL=en_US.utf8 

假設你在UNIX上,也儘量在命令行man localelocale -a,以及谷歌"utf locale"和相似搜索。

+0

是的,這是問題所在。問題是我的電腦LANG = UTF-8,當我ssh到遠程服務器時,服務器的LANG改變了! – user1819905

+0

@ user1819905,「UTF-8」不是有效的語言規範。它應該是'en_US.UTF-8'或'de_DE.UTF-8'。是的,如果SSH客戶端被配置爲可以通過SSH傳播到服務器環境。 10.7+中的SSH客戶端是。 –

+1

LC_ALL = en_US.utf8解決了它!謝謝! – psihodelia