我有一个非常简单的应用程序,它解析一些文本文件并将记录插入SQL Server数据库。
"它对我有用,"但是当在另一台机器上运行时,它在以下行崩溃:
cmr->dateTimeStamp = TIMESTAMP_STRUCT { };
对我来说,这意味着缺少与TIMESTAMP_STRUCT相关的依赖关系,因为那是该行中唯一没有出现过的,在此之前,在程序中。
TIMESTAMP_STRUCT和SQLUSMALLINT在sqltypes.h中定义,无论如何它们只是typedef,所以我不希望那里有任何依赖。
我已在目标计算机上安装了SQL Server本机客户端11和可视化C ++运行库。
我还能错过什么?
Visual Studio 2015,目标计算机是Windows Server 2008 R2。
我在两台机器上使用相同的输入文件,但它只在一台机器上失败。
答案 0 :(得分:0)
问题归结为编译器标志。
这个项目起初是一个完全不相关的玩具应用程序,里面有AVX指令。当它成为“真正的”应用程序时,目标指令集的标志永远不会被设置。
删除该编译器标志(/ arch:AVX)使程序在两台机器上都能正常工作。 令我感到奇怪的是,在这个程序中,无论如何都没有AVX指令,那么为什么设置的标志会导致两台机器之间执行的差异,特别是对于像原始类型组成的结构的初始化这样的良性?