我已經在VS 2013中創建了C++ * .dll。這在我的開發機器上運行良好,但在客戶機上運行時發生錯誤。無法加載庫問題與外部依賴
這裏是cpp文件。
#include "stdafx.h"
#include "EasyDLL.h"
using namespace System;
double WINEXPORT EASYDLL_GetServerDateTime(int clientServerTimeDiff)
{
System::DateTime clientDateTime = System::DateTime::Now;
System::TimeSpan duration(0, 0, clientServerTimeDiff);
System::DateTime serverDateTime = clientDateTime.Add(duration);
String^ strTemp = serverDateTime.ToString("yyyyMMddHHmmss");
double result = double::Parse(strTemp);
return result;
}
我相信原因是,外部依賴關係不存在於客戶機上。
我對C++沒有多少經驗。
引發問題:
當你編譯(並且我只是在調試時編譯),外部依賴和一個dll(mscorlib.dll)中有一大堆頭文件。
mscorlib.dll存在於客戶端計算機上的相同位置,所以我有點折扣作爲問題,但標題不存在。
問題:
我是否需要將這些頭文件與我創建的DLL一起發出,還是應該將它們編譯到我的dll中?
下面是一些外部依賴關係的屏幕截圖。當項目創建時,他們中的大多數似乎默認在項目中。
編輯:
改變項目釋放它似乎是另一臺機器,我開發的機器上運行,不得不等待,直到明天來測試客戶端的經過。
儘管它已經工作到目前爲止,我檢查了DependencyWalker,並在看我的dll時得到以下內容,這是否有什麼值得擔憂的?
問題是您正在構建調試版本,而您使用的另一臺機器沒有安裝運行時的調試版本? –
構建發佈版本。在輸出上運行'depends.exe'來查看你的外部依賴關係。如果您的DLL很簡單並且不會將堆指針的所有權與它的調用方交換,那麼只需將該項目設置爲針對CRT進行靜態構建即可。 –
嗨安迪,我會在哪裏找到depend.exe? – Hank