[問題] dll 資料存取問題與相依性

看板C_and_CPP作者 (妤欣)時間4年前 (2019/08/09 11:25), 4年前編輯推噓1(107)
留言8則, 6人參與, 4年前最新討論串1/1
目前有一個 dll 專門負責提供 a. 資料 get / set b. 資料存取 作法 C.h 宣告資料的陣列 A程式 include C.h A程式 透過檔案IO讀取資料存到 C.h 宣告的陣列中 C程式 include C.h C程式 提供一些 get /set 方法給其他人用 並打包成 dll 現在發現會出問題 程式 A 流程 a. 讀擋到陣列 (C.h 宣告之陣列) b. 透過 C.dll 的 get 函數拿資料 結果:卻發現 get 出來的資料都是 0 (根本沒有讀到檔案內容) 請問我哪裡觀念錯了嗎? 如何修正呢 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.29.40 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1565321102.A.8E2.html

08/09 13:00, 4年前 , 1F
C 程式的陣列和 A 程式不相干啊,不同程式不會共用變數
08/09 13:00, 1F

08/09 13:01, 4年前 , 2F
不過你的敘述不清,實際上錯在哪還是要看原始碼才知道
08/09 13:01, 2F
補充~ c.h int data [N]; c.c #include "c.h" int get (int i) { return data[i]; } bool set(int i, int val) { if(i < 0 || i >= N) return -1; data[i] = val; return false; } a.c #include "c.h" bool read_data(char *file_path) { // read file from file_path to data[i] for i = 0 to N-1 (declare in c.h) } main { read_data ("xxx"); for i = 0 to N-1 // 都是印出 0 ........ ><........ print get(i) << endl; } file content like 2, 5, 18, 10, 6, ......

08/09 14:12, 4年前 , 3F
先輸出 A 和 C 裡陣列的起始位址看看
08/09 14:12, 3F

08/09 14:33, 4年前 , 4F
我覺得是1樓的情況
08/09 14:33, 4F
※ 編輯: OfficeGL (114.136.29.40 臺灣), 08/09/2019 16:14:08

08/09 21:52, 4年前 , 5F
你在get(int i)裡面先把data[i]印出來看看
08/09 21:52, 5F

08/10 10:28, 4年前 , 6F
C沒看到寫檔,A要從檔案讀取?
08/10 10:28, 6F
a已經有寫檔了,而且寫到共用的c.h宣告的變數~ ※ 編輯: OfficeGL (114.136.29.40 臺灣), 08/10/2019 11:39:23

08/10 20:23, 4年前 , 7F
你例子沒貼完整人家怎麼幫你debug.. 最重要的dllexport
08/10 20:23, 7F

08/10 20:23, 4年前 , 8F
怎麼宣告的沒寫..你應該是data沒dllexport變成到用各自的
08/10 20:23, 8F
文章代碼(AID): #1TJEUEZY (C_and_CPP)