[問題]DLL在VC2017 Debug模式下抓不到指定檔案

作者: commandoEX (卡曼都)   2018-09-12 01:03:28
開發平台(Platform): (Ex: Win10, Linux, ...)
windows 10 1803
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Visual Studio 2017 社群版(15.8.3)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)

問題(Question):
小弟我主要是寫delphi的,幾乎沒碰過c++(更之前只有稍微碰過C/VB)
今天BOSS想要把實驗室中某個程式給其他老師用
因為外面根本沒啥人用delphi所以叫我改寫成dll給其他實驗室的人呼叫
dll本身只有一個程式,沒有input參數也沒output參數
只讀預定義的設定檔和寫固定的結果檔
為了方便對方使用,我用delphi、C++、C#都寫了一個程式碼檔載入dll定義好函式
讓對方可以直接呼叫程式不用再自己引入dll
delphi和C#都測試能正常運行,就C++問題解決不了
主要有三個問題:
1.如標題所說的VS使用debug模式下程式抓不到設定檔,不過如果直接進資料夾點程式
是抓的到的
2.dll的程式執行完後測試用的主控台程式似乎就卡住了,一直沒有執行到最後一行
system("pause");
3.因為dll我編譯了x86和x64版,所以在C++中用#ifdef去抓程式要載入哪個dll
但是WIN32不管是在x86還是x64下都是true,目前是編譯環境在x64時用#undef WIN32
讓系統只抓到 _WIN64的條件,不知道是否有更好的解法?
餵入的資料(Input):

預期的正確結果(Expected Output):
dll回傳訊息"計算完成"
錯誤結果(Wrong Output):
dll回傳訊息"未檢查到Data.csv"
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
作者: eye5002003 (下一夜)   2018-09-12 10:48:00
#elif defined(_WIN32) 就是else if啦,很多程式都用_WIN32來判斷平台,所以x64一樣抓的到,先抓_WIN64就解決了。system("pause")就是用來卡住的。debug模式抓的資料夾位置好像是專案根目錄...吧

Links booklink

Contact Us: admin [ a t ] ucptt.com