Tôi đã làm theo hướng dẫn bắt đầu sử dụng Webassembly http://webassembly.org/getting-started/developers-guide/Tôi có thể đọc tệp từ đĩa bằng cách sử dụng Webassembly không?
Nó hoạt động tốt và hiển thị "Xin chào, thế giới!" tin nhắn trong trình duyệt.
Sau đó, tôi đã thử một mã C++ nhỏ, mở một tệp văn bản và thực hiện phép tính (10 * 20) sau khi đọc tệp.
emcc đã biên dịch tệp hoàn toàn không có lỗi.
Nhưng khi tôi phân phối tệp qua HTTP bằng cách chạy emrun, nó không thể mở tệp.
Đây là những gì tôi nhìn thấy trong emrun web console:
Unable to open file
200
Có bất kỳ hạn chế để mở tập tin từ ổ đĩa cục bộ?
[[email protected] hello]$ cat pfile.cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string line;
int a, b, c;
ifstream myfile("test.txt");
if (myfile.is_open()) {
while (getline (myfile, line)) {
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file" << endl;
a = 10;
b = 20;
c = a * b;
cout << c << endl;
return 0;
}
[[email protected] hello]$ emcc pfile.cpp -s WASM=1 -o pfile.html -v
INFO:root:(Emscripten: Running sanity checks)
clang version 4.0.0 (https://github.com/kripken/emscripten-fastcomp-clang.git c7c210fee24e0227f882337521b25b1ed9c36d5b) (https://github.com/kripken/emscripten-fastcomp.git 90b726ede4acf47c1bca089de6c79a0b8f2c5d9a) (emscripten 1.37.18 : 1.37.18)
Target: asmjs-unknown-emscripten
Thread model: posix
InstalledDir: /home/thiago/Downloads/emsdk/clang/fastcomp/build_incoming_64/bin
"/home/thiago/Downloads/emsdk/clang/fastcomp/build_incoming_64/bin/clang-4.0" -cc1 -triple asmjs-unknown-emscripten -emit-llvm-bc -emit-llvm-uselists -disable-free -main-file-name pfile.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -no-integrated-as -mconstructor-aliases -v -dwarf-column-info -debugger-tuning=gdb -coverage-notes-file /tmp/tmpV3VHOz/pfile_0.gcno -nostdsysteminc -nobuiltininc -resource-dir /home/thiago/Downloads/emsdk/clang/fastcomp/build_incoming_64/bin/../lib/clang/4.0.0 -D __EMSCRIPTEN_major__=1 -D __EMSCRIPTEN_minor__=37 -D __EMSCRIPTEN_tiny__=18 -D _LIBCPP_ABI_VERSION=2 -Werror=implicit-function-declaration -std=c++03 -fdeprecated-macro -fno-dwarf-directory-asm -fdebug-compilation-dir /home/thiago/hello -ferror-limit 19 -fmessage-length 164 -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -nobuiltininc -nostdsysteminc -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/libcxx -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/lib/libcxxabi/include -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/compat -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/include -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/SSE -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/libc -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/lib/libc/musl/arch/emscripten -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/local/include -isystem/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/SDL -o /tmp/tmpV3VHOz/pfile_0.o -x c++ pfile.cpp
clang -cc1 version 4.0.0 based upon LLVM 4.0.0 default target x86_64-unknown-linux-gnu
#include "..." search starts here:
#include <...> search starts here:
/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/libcxx
/home/thiago/Downloads/emsdk/emscripten/incoming/system/lib/libcxxabi/include
/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/compat
/home/thiago/Downloads/emsdk/emscripten/incoming/system/include
/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/SSE
/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/libc
/home/thiago/Downloads/emsdk/emscripten/incoming/system/lib/libc/musl/arch/emscripten
/home/thiago/Downloads/emsdk/emscripten/incoming/system/local/include
/home/thiago/Downloads/emsdk/emscripten/incoming/system/include/SDL
End of search list.
[[email protected] hello]$ emrun --no_browser --port 8080 .
tất nhiên có những hạn chế. Nếu không có hạn chế, thì webassembly sẽ là một lỗ hổng bảo mật lớn lớn. –
Bạn có nhận được giải pháp nào cho điều này không? –