小编Cla*_*ton的帖子

什么是R6010错误?

我遇到了一个问题,我的可执行文件可能会收到中止/重试/忽略对话框,例如:

调试错误!程序:... whatever.exe

R6010-已调用abort()

我相信这是因为我有一个未处理的异常,可以使用以下简单程序复制该问题:

int _tmain(int argc, _TCHAR* argv[])
{
    try
    {
        throw std::exception();
    }
    catch (std::logic_error& e)
    {

    }

    std::cout << "Hello World!";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的假设是否正确(它是由未处理的异常引起的)?我在网上找到了很多有关该错误的示例,但实际上并没有定义错误代码的含义。

此错误仅发生在我的调试版本中。我的发布版本将在崩溃之前挂起(这是我对未处理异常的期望)。

c++ windows exception visual-c++

3
推荐指数
1
解决办法
5474
查看次数

使用可从Excel读取的C#代码创建.DBF(VFP与否)

语言:C#,系统:Windows7,Excel 2007

我想从一些数据创建.DBF,我想从Excel 2007打开它.它可以是dBase或foxpro.我目前正在使用FoxPro9(顺便说一句,这段代码来自互联网):

 OleDbConnection con = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\\Temp\\;");
            con.Open();
            OleDbCommand cmd1 = new OleDbCommand("Create Table TestDBF (Field1 I, Field2 C(10))", con);
            OleDbCommand cmd2 = new OleDbCommand("Insert Into TestDBF Values (1, 'Hello')", con);
            OleDbCommand cmd3 = new OleDbCommand("Insert Into TestDBF Values (2, 'World')", con);
            cmd1.ExecuteNonQuery();
            cmd2.ExecuteNonQuery();
            cmd3.ExecuteNonQuery();
            con.Close();
Run Code Online (Sandbox Code Playgroud)

这会生成我可以在DbfViewer中打开的文件,但是,我无法在Excel 2007中打开它,也不能在我拥有的某些应用程序中使用.我可以使用DbfViwer手动将FoxPro .dbf转换为dbaseIII dbf,但我希望它是自动的.

有任何想法吗?

提前致谢

c# excel dbf dbase visual-foxpro

2
推荐指数
1
解决办法
5955
查看次数

为什么需要在 FormatMessage 中转换 lpBuffer (LPTSTR) 参数?

在Windows的FormatMessage()函数中,参数:

  _Out_     LPTSTR lpBuffer
Run Code Online (Sandbox Code Playgroud)

我正在认真思考。按照 Hart 的 Windows 系统编程书籍,我声明一个LPTSTR指针用作lpBuffer(例如LPTSTR errortext;),然后调用该FormatMessage()函数。

传入该参数的正确方法是:(LPTSTR)&errorText

这很好用。但我不明白为什么我需要写(LPTSTR)。我知道这是类型转换,我读到了它,但它对我来说没有意义,因为我没有改变变量类型或任何东西,我将它声明为 anLPTSTR并且我将它的内存地址传递给函数,函数需要 anLPTSTR并且我将其传递给了 an LPTSTR,那么为什么我需要将其(LPTSTR)作为参数的一部分呢lpBuffer

c c++ winapi formatmessage

2
推荐指数
1
解决办法
946
查看次数

C2338编译错误的Microsoft Visual Studio单元测试

我尝试在Visual Studio 2013中编译单元测试时收到以下错误:

错误1错误C2338:测试编写者必须为您的类类std :: basic_string <wchar_t,struct std :: char_traits <wchar_t>定义ToString <Q*q>的特化,类std :: allocator <wchar_t >> __cdecl Microsoft :: VisualStudio :: CppUnitTestFramework :: ToString <struct HINSTANCE __>(struct HINSTANCE__*).

您可以通过如下所示的测试方法来复制错误:

const std::wstring moduleName = L"kernel32.dll";
const HMODULE expected = GetModuleHandle(moduleName.c_str());
Microsoft::VisualStudio::CppUnitTestFramework::Assert::AreEqual(expected, expected);
Run Code Online (Sandbox Code Playgroud)

有谁知道我需要怎么写这样的专业化ToString

c++ windows unit-testing vs-unit-testing-framework visual-studio-2013

2
推荐指数
2
解决办法
3298
查看次数

如何使用std :: is_same生成编译时错误?

我使用的是第三方API,其中包含一个包含一组typedef的头文件.在过去的4年中,对某些typedef进行了微小的更改(例如,在unsigned/signed之间切换,从int更改为long等).

我想在我的代码中添加编译时检查,以便我知道特定的typedef是否已更改.我想添加如下内容:

#if !std::is_same<::ApiType, int>::value
#error Type has changed
#endif
Run Code Online (Sandbox Code Playgroud)

当我在各种typedef中尝试这个时,我发现总是抛出编译错误.

我设置了一个小的控制台程序,它显示了同样的问题(即对于预处理器使用总是假的)但在预处理器之外很好:

#include "stdafx.h"
#include <Windows.h>
#include <type_traits>

int main()
{
#if std::is_same<int, int>::value
  const auto aa = 14; // omitted
#else
  const auto bb = 17;
#endif

#if std::is_same<::DWORD, int>::value
  const auto cc = 14; // omitted
#else
  const auto dd = 17;
#endif

  const auto a = std::is_same<int, int>::value; // true
  const auto b = std::is_same<::DWORD, int>::value; // false
  const auto c = std::is_same<::DWORD, unsigned long>::value; // true …
Run Code Online (Sandbox Code Playgroud)

c++ std visual-c++ c-preprocessor

1
推荐指数
1
解决办法
827
查看次数

Visual FOXPRO加载/使用.FLL文件

我的公司有一个旧的应用程序(从2005年左右开始)使用Visual FoxPro 7,遗憾的是他们没有源代码(.PJX,.PJT)文件.我必须更改连接字符串,因为我们必须将数据库移动到新服务器.问题是(connection.dbf文件)中的连接字符串是加密的.

我用文本编辑器打开了.exe文件,发现了以下代码

SET LIBRARY TO libs\Cipher50.fll ADDITIVE
Run Code Online (Sandbox Code Playgroud)

Cipher50.fll存在于根应用程序文件夹中.

我的问题

我想创建一个可以加载"Cipher50.fll"文件的应用程序(可能像.NET Reflection)并使用正确的函数,以便我可以更新我的connection.dbf文件.

我怎样才能做到这一点?

PS:我对Visual FoxPro一无所知.

foxpro visual-foxpro

0
推荐指数
1
解决办法
1205
查看次数