当前位置: 首页 > 知识库问答 >
问题:

为什么我不能调用CTime::GetAsDBTIMESTAMP与Visual Studio 2013?

毛峻
2023-03-14

我在Visual Studio 2012中创建了一个新的Visual C Win32项目—只是一个带有预编译头的控制台应用程序。我为atltime添加了一个include。h和三行代码到\u tmain

// timeapp2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "atltime.h"

int _tmain(int argc, _TCHAR* argv[])
{
    CTime c = CTime::GetCurrentTime();
    DBTIMESTAMP t;
    c.GetAsDBTIMESTAMP(t);
    return 0;
}

我编译它。它编译得很好。

我在Visual Studio 2013中尝试了同样的方法。我得到以下错误:

Error   1   error LNK2019: unresolved external symbol "public: bool __thiscall ATL::CTime::GetAsDBTIMESTAMP(struct tagDBTIMESTAMP &)const " (?GetAsDBTIMESTAMP@CTime@ATL@@QBE_NAAUtagDBTIMESTAMP@@@Z) referenced in function _wmain c:\tmp\timeapp\timeapp2\timeapp2.obj    timeapp2

Error   2   error LNK1120: 1 unresolved externals   c:\tmp\timeapp\Debug\timeapp2.exe   1   1   timeapp2

这是从MSDN订阅者下载的Visual Studio Premium 2013 Update 2的新安装。我在两台不同的机器上尝试了同样的事情,一台运行视窗8.1 x64,另一台运行视窗服务器2012 R2。两者都无法使用Visual Studio 2013编译。

我做错了什么?

共有2个答案

公孙鸿才
2023-03-14

这已被确认为Visual Studio 2013中的错误,并将在下一个版本中修复。从Microsoft Connect页面:

感谢您报告此错误!我现在正在修理。这将在VS的下一版本中解决。

Artur Laksberg,VC图书馆团队

目前,我们可以使用发布在Connect页面上的以下解决方案:

CTime c = CTime::GetCurrentTime();
DBTIMESTAMP d;
COleDateTime(c.GetTime()).GetAsDBTIMESTAMP(d);
劳和雅
2023-03-14

你错过了ATL库。

(以下是VS2008,很抱歉我的旧环境-但我希望您可以在类似的位置找到选项):

创建项目时,选择“添加常规ATL标题”

或者,在Project Configuration on/General下,启用“使用ATL”(静态或动态,动态提供较小的可执行文件,但您需要在清单中提供相应的ATL运行时,并将其安装在目标上)

[edit]
您可以尝试手动将相应的ATL库添加到链接器(atl{s}{d}. lib,使用's'表示静态,'d'表示调试构建)。还没有在VS2013下做过ATL,所以这些只是“有根据的猜测”。

如果只是这一个调用,那么也可以使用GetSystemTime,然后填充DBTIMESTAMP结构。

(无耻的插件:或者,如果你来自CTime,这只是一个包装_time64_t看到这里转换time_t-

 类似资料:
  • 问题内容: 我有一个expressjs应用程序,在特定的路由上,我调用了一个函数,该函数通过使用数据库文档作为参数来响应数据库中的用户。我使用基于promise的库,并且想在将数据库文档放入响应中的回调内联。但是当我这样做时程序会失败。有人可以解释为什么吗?我还想知道为什么内联调用才能真正起作用。两种方法和之间有一些根本区别吗? 这是一个有效和无效的示例。假定返回用户文档的承诺。 问题答案: 像这

  • 问题内容: 如果html文件是本地文件(在我的C驱动器上),则可以使用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么? 任何可能的解决方法? 问题答案: 如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,则将是一个安全漏洞。 解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制更为严

  • 我了解在lambda中捕获此(修改对象属性)的正确方法如下: 但我对我所看到的以下特点感到好奇: 我感到困惑(并希望得到回答)的奇怪之处在于,为什么以下方法有效: 以及为什么我无法通过引用明确捕获此内容:

  • null null 我在/s/chart/img/purple.png中有一个img,我想在“ChartContainer3”中创建,但我不明白当我单击submit时没有发生任何事情,没有创建。那么我如何在“ChartContainer3”中进行创建呢?

  • 我正在使用forEach循环一个nodeList。我的代码如下 此代码引发错误为 未捕获的TypeError:Array.Foreach不是函数 然而,一些较旧的浏览器还没有实现nodelist.foreach()和array.from()。但是这些限制可以通过使用array.prototype.foreach()来规避(本文档中有更多内容)。 参考:MDN

  • 从TensorArray读取: 使用: 问题: 回溯(最近一次调用last):RLU培训中第130行的文件“\main.py”。train()文件“C:\Users\user\Documents\Projects\rl toolkit\rl_training.py”,第129行,在train self中_rpm,赛尔夫。批量大小,自行确定。梯度步数,记录步数b=self。在call result=