我在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机器上,因此将其视为问题。
祝好运!

07-24 09:45
查看更多