來自北太天元插件開發(fā)者的問題
問題1: 我們傳入?yún)?shù)為一個(gè)文件路徑時(shí),在原項(xiàng)目文件中可以繪制出圖形,但在北太天元中無法繪制(可能跟我們對(duì)prhs這個(gè)輸入?yún)?shù)的理解不太準(zhǔn)確有關(guān)系)。
void show_mesh(int nlhs, bxArray *plhs[], int nrhs, const bxArray *prhs[]){
??? if(nrhs!=1)
??????? return;
??? if(!bxIsString(prhs[0]))
??????? return;
?? ?
?? ?CTMesh mesh;
? ??? mesh.read_m((char*)prhs[0]);
回答:? 注意這里的 prhs[0] 不能夠直接轉(zhuǎn)為 (char *),? 例如寫一個(gè)這樣的子函數(shù)
/**
?* \brief get_string? 取得一個(gè)字符串
?*
?* \param p? 是一個(gè)字符串標(biāo)量 或者 一行的字符矩陣
?*
?* \return? 字符串
?*/
std::string get_string(const bxArray *p) {
? if(bxIsString(p)) {
??? const char * chars = bxGetStringDataPr(p);
??? int n = bxGetStringLen(p);
??? std::string s;
??? s.resize(n);
??? for(int i = 0; i < n; i++) {
????? s[i] = chars[i];
??? }
??? return s;
? }
? assert(bxIsChar(p));
? int m = bxGetM(p);
? int n = bxGetN(p);
? assert(m == 1);
? std::string s;
? const char *chars = bxGetChars(p);
? s.resize(n);
? for(int i = 0; i < n; i++) {
??? s[i] = chars[i];
? }
? return s;
}
然后上面的代碼可以修改為
void show_mesh(int nlhs, bxArray *plhs[], int nrhs, const bxArray *prhs[]){
??? if(nrhs!=1)
??????? return;
??? if(!bxIsString(prhs[0]))
??????? return;
?? ?
?? ?CTMesh mesh;
std::string str0 = get_string(prhs[0]);
? ??? mesh.read_m(str0.c_str());? //不知道這兒會(huì)不會(huì)報(bào)錯(cuò)說const char * 不能轉(zhuǎn)成 char *
// 希望 mesh.read_m 的參數(shù)也能支持const char *
?
問題2: 我們嘗試在main.cpp文件中使用類似std::cout的函數(shù)來輸出一些相關(guān)參數(shù)來幫助我們更好的理解代碼中存在的問題,但是在使用過程中發(fā)現(xiàn)北太天元的命令行窗口并不會(huì)輸出內(nèi)容。在北太天元中是否有類似的函數(shù)能夠幫助我們修改main.cpp中存在的問題?
回答:? 使用 bxPrintf 函數(shù),? 例如
std::string message_str("this is a message");?
bxPrintf("輸出的字符串: %s", message_str.c_str());