我在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时得到了以下内容,这有什么好担心的吗?
最佳答案
您不需要将标头与DLL一起运送。如果Mats答案不能解决问题,您可能要尝试使用此工具:http://www.dependencywalker.com/
您可以通过这种方式“查看” DLL。根据我的经验,最好在两台机器上(即在dev机器和客户端机器上)运行它,因为看起来像在客户端机器上的错误的东西可能也存在于dev机器上,因此将其视为问题。
祝好运!