Aşağıdaki wiki sayfasında belirtildiği gibi simgeleri ayıklamak için tcl shellicon komutunu kullanıyorum, bunun içinde bazı uluslararası karakter sorunları var, sonra sınamak için bazı kodlar yazarım ama yok Çalışmıyor, düzeltmek için bana yardım edebilecek biri var. Kabuk çalıştırmak cmdtcl/tk içindeki uluslararası chars açılamıyor
gcc compile: gcc testdll.c -ltclstub86 -ltkstub86 -IC:\Users\USERNAME\tcc\include -IC:\Users\USERNAME\tcl\include -LC:\Users\USERNAME\tcl\lib -LC:\Users\USERNAME\tcc\lib -DUSE_TCL_STUBS -DUSE_TK_STUBS -shared -o testdll.dll
pencere:
/*
* testdll.c
* gcc compile: gcc testdll.c -ltclstub86 -ltkstub86 -IC:\Users\L\tcc\include -IC:\Users\L\tcl\include -LC:\Users\L\tcl\lib -LC:\Users\L\tcc\lib -DUSE_TCL_STUBS -DUSE_TK_STUBS -shared -o testdll.dll
*/
#include <windows.h>
#include <tcl.h>
#include <stdlib.h>
int TestdllCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[]) {
char * path;
Tcl_DString ds;
if (objc > 2) {
Tcl_SetResult(interp, "Usage: testdll ?path?",NULL);
return TCL_ERROR;
}
if (objc == 2) {
path = Tcl_GetString(objv[objc-1]);
path = Tcl_TranslateFileName(interp, path, &ds);
if (path != TCL_OK) {
return TCL_ERROR;
}
}
Tcl_AppendResult(interp, ds, NULL);
return TCL_OK;
}
int DLLEXPORT Testdll_Init(Tcl_Interp *interp) {
if (Tcl_InitStubs(interp, "8.5", 0) == NULL) {
return TCL_ERROR;
}
Tcl_CreateObjCommand(interp, "testdll", TestdllCmd, NULL, NULL);
Tcl_PkgProvide(interp, "testdll", "1.0");
return TCL_OK;
}
I ile derleme I Aslında
// This line isn't in the output, just to show the first line of output is a *EMPTY LINE*
while executing
"testdll 'C:/Users/L/桌面'"
invoked from within
"puts [testdll 'C:/Users/L/桌面']"
(file "testdll.tcl" line 2)
: tclsh testdll.tcl
load testdll
puts [testdll C:/Users/L/桌面]
çıkış içeriği "C:/Users/L/桌面 olan bir çizgi yazdırmak istiyorum "
Tcl_GetString, Tcl_TranslateFileName öğesinin Tcl_FSGetNormalizedPath, Tcl_FSGetNativePath ile nasıl değiştirileceğini ayıklamak için bu dll'yi yazdım, açık mı merak ediyorum?
Teşekkür ederiz!
Hangi kod sayfasını kullanıyorsunuz? Bakınız: [unicode-karakterler-in-windows-komut satırı] (http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how) –
Bir uzantı yapmak istiyorum içindeki Çince karakterleri içeren yolu yazdırın, ancak yukarıdaki kod bir hata dizesinden başka bir şey yazdırmıyor, normal bir yol bile girdiğim şeyi yazdıramıyor. Ben ascii kullanıyorum. – Kaffa
Lütfen hatayı eklemek için sorunuzunuzu düzenleyin. Ayrıca, 'load' komutu mutlak yollarla daha iyi çalışır. Testdll dosyasının mutlak yolunu kullanmak için değiştirmeyi deneyin. –