0 👍
94 lượt xem
bởi (🏅1)
đã sửa bởi

Em đọc file ra từ resource QT và cần convert QFile ra FILE* em có làm như sau:
QFile myFile("goforward.raw");
myFile.open(QIODevice::ReadOnly);
int fileHandle = myFile.handle();
FILE* fh = fdopen(fileHandle, "rb");
Tuy nhiên có lỗi do handle() trả về -1 em có đọc documment bên QT thì có vẻ làm handle() chỉ dùng bên Unix còn bên Windows thì ko được thì phải. 
Ai giúp em với ạ ?

1 Câu trả lời

0 👍
bởi (🏅150)
Ko liên quan đến Windows hay Linux ở đây đâu. Chắc chú open file bị fail rồi. Check return value của hàm open() đi xem. 
Nếu fail thì check lại file path xem chuẩn chưa ?
 
bởi (🏅1)
QFile mFile(":/new/prefix1/Resources/cer1.p12");
    if(!mFile.open(QFile::ReadOnly )){
        qDebug() << "could not open file for read";
        return 0 ;
    }
    fileHandle = mFile.handle();
    while ( -1 == fileHandle)
    {
        if(!mFile.open(QFile::ReadOnly )){
            qDebug() << "could not open file for read";
            //return 0 ;
        }
        fileHandle = mFile.handle();
    }
Em có checm open thì thấy open được rồi nhưng chết đúng chỗ handle().
bởi (🏅150)
A thử code của chú với 1 file ko phải nằm trong resource thì thấy OK (chạy Qt trên Windows).
Trường hợp của chú a đoán khi compile code thì file nằm trong resource nó compile ra thành code nằm trong exe rồi nên chỉ có thể dùng QFile để tương tác chứ ko dùng như file bình thường được.

Mà chưa hiểu tại sao cần dùng FILE mà ko dùng QFile mà làm việc ??
bởi (🏅1)
Em phải thao tác với openssl nên mấy hàm nó yêu cầu input là FILE* anh ạ.
Coding Guru là nơi dành cho cộng đồng lập trình viên Việt Nam hỗ trợ nhau về tất cả các vấn đề liên quan đến công nghệ.

Chúng ta hãy cùng nhau xây dựng một cộng đồng công nghệ Việt Nam mạnh mẽ, thúc đẩy và giúp đỡ nhau cùng phát triển, thăng tiến trong sự nghiệp.

***
Nơi đam mê hội tụ
***

Một số câu hỏi gần đây có thể tương tự hoặc liên quan ↓

0 👍
2 trả lời 133 lượt xem
hỏi bởi Duy Ngô 10/3/2020
+1 👍
1 trả lời 84 lượt xem
hỏi bởi tungnm6 (🏅2) 20/6/2019
0 👍
2 trả lời 173 lượt xem
hỏi bởi ncq 15/8/2019
...