小编Ale*_*x F的帖子

跨平台UI工具包

我需要编写跨平台的GUI应用程序,我可以使用哪些工具包?目前我在Windows,MSVC和Linux,gcc工作.

user-interface cross-platform

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

使用LSB C++编译器构建Boost

我想用来自Linux标准库http://www.linuxfoundation.org/collaborate/workgroups/lsb的 LSB C++编译器构建我的程序.程序取决于使用gcc 4.4版本构建的Boost库.编译失败.是否可以使用LSB C++编译器构建Boost库?或者,是否可以使用一些旧的gcc版本构建Boost库,建议使用什么版本?我的最终目标是让我的可执行文件和第三方Boost库在大多数Linux发行版上运行.

通常,可以采取哪些措施来获得更好的Linux发行版二进制兼容性,根据Boost库开发C++闭源应用程序?

c++ linux gcc boost binary-compatibility

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

在C++ 0x中提升lambda :: _ 1

int main() 
{ 
    std::vector<int> v; 
    v.push_back(1); 
    v.push_back(3); 
    v.push_back(2); 

    std::for_each(v.begin(), v.end(), std::cout << boost::lambda::_1 << "\n");
} 
Run Code Online (Sandbox Code Playgroud)

可以在不使用Boost的情况下将此代码转换为C++吗?我知道C++ 0x lambda表达式语法,但没有尝试在这样的上下文中使用占位符.

c++ lambda boost placeholder c++11

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

无法在Android模拟器上安装ApiDemos示例项目

我使用Eclipse创建了ApiDemos项目 - New Project - Sample命令.试图在Android模拟上执行它,我遇到了安装错误.然后我在文件资源管理器DDMS中打开了data/app目录,并删除了名称从ApiDemos开始的两个文件(可能这是不正确的,但这已经完成).现在,尝试执行我的ApiDemos项目,我有:

[2011-11-15 16:23:19 - ApiDemos] Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE
[2011-11-15 16:23:19 - ApiDemos] Please check logcat output for more details.
[2011-11-15 16:23:19 - ApiDemos] Launch canceled!

logcat的:

package com.example.android.apis signatures do not match the previously installed version, ignoring!

现在可以纠正这个问题吗?我知道我可以重新创建模拟器,但我想用现有的模拟器来解决这个问题,只是为了知道它应该如何完成.

android android-emulator

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

符号无法解决

Android Java项目,重现问题的最小代码:

Constants.java:

package alex.restaurantfinder;

public class Constants {
    public static final String LOGTAG = "...";
}
Run Code Online (Sandbox Code Playgroud)

ReviewCriteria.java:

package alex.restaurantfinder;
import android.app.Activity;

public class ReviewCriteria extends Activity {
    static String s = Constants.LOGTAG;            // error
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

Constants.LOGTAG无法解析.

我的错误在哪里?

编辑.问题是,当我在Eclipse中按下Ctrl + Shft + O时,它添加了这一行:

import android.provider.SyncStateContract.Constants;

它阻止编译器使用我自己的Constants类.

java android

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

将泛型参数转换为整数或从整数转换

byte我想编写通用类,旨在与和 等内置类型一起使用ushort。在内部计算中,我需要将泛型类型转换为整数,然后再转换回泛型类型。我找到了编译此类代码的方法,例如:

class Test<T> where T : struct, IConvertible
{
    public static T TestFunction(T x)
    {
        int n = Convert.ToInt32(x);
        T result = (T)Convert.ChangeType(n, typeof(T));
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为,如果在计算循环中使用此类转换,则可能会显着降低性能。有没有更好的方法来进行这些转换?

c# generics casting

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

cref不会在对象浏览器中创建链接

我在C#2010类库中有以下代码:

/// <summary>
/// Execute all enable tests synchronously.
/// Function may throw exception if executed in invalid state (for example, all tests are disabled).
/// If function doesn't throw exception, this doesn't mean, that all tests succeeded. After function 
/// finished, it is necessary to check the state of all tests.
/// Function is synchronous and may take a long time to execute.
/// Use <see cref="SiX_Dg_RequestStop"/> function to stop this function from another thread.
/// </summary>
/// <exception …
Run Code Online (Sandbox Code Playgroud)

c# xml visual-studio-2010

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

使用 size_t 索引以相反顺序枚举数组

假设我们需要以相反的顺序打印int大小的数组:N

// Wrong, i is unsigned and always >= 0:
for(size_t i = N-1; i >= 0; --i){cout << data[i];}

// Correct, but uses int instead of size_t:
for(int i = N-1; i >= 0; --i){cout << data[i];}

// Correct, but requires additional operation in the loop:
for(size_t i = N; i > 0; --i){cout << data[i-1];}

// Probably the best version, but less readable.
// Is this well-defined behavior?
for(size_t i = N-1; i != (size_t)(-1); …
Run Code Online (Sandbox Code Playgroud)

c++ arrays indexing

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

C++ API设计和错误处理

我需要编写C++ API,它包含几个使用.lib文件(MSVC)从Dll公开的导出C++类.从我理解的另一个问题的答案来看,导出的类方法不能使用异常,如果C++ API是在一个VC++版本中构建的(比如2010),而客户端代码是用另一个VC++版本编写的.由于异常不能成为公共API接口的一部分,我正在寻找另一种错误处理策略.我的限制:我不想使用COM,而丰富的错误代码系统(如HRESULT)对我来说还不够.我希望有类似异常的类,其中包含错误代码,错误消息和我需要的任何其他信息.另外,我不想为每个VC++版本单独构建.

我目前的做法如下.每个公共类方法都返回枚举值(如ErrorCode).在方法失败的情况下,像GetLastErrorInfo这样的静态函数返回指向C++类的指针(比如说ErrorInfo),它包含到达错误信息.ErrorInfo保留为特定于线程的数据,并包含当前线程中最后一次调用的错误信息.如果最后一次API调用成功,则GetErrorInfo返回NULL.

请考虑以下代码:

try
{
    classPtr->DoSomething();
    cout << classPtr->GetData() << endl;
}
catch(const MyException& ex)
{
    cout << ex.GetErrorMessage() << endl;
    return;
}

没有例外,它看起来像这样:

ErrorCode result;
int data;
result = classPtr->DoSomething();
if ( result != Success )
{
    cout << MyClass::GetLastErrorInfo()->GetErrorMessage() << endl;
    return;
}
result = classPtr->GetData(data);
if ( result != Success )
{
    cout << MyClass::GetLastErrorInfo()->GetErrorMessage() << endl;
    return;
}
cout << data << endl;

这看起来不太好.类接口很乱:每个函数现在都有ErrorCode返回类型.返回值成为输出参数.是否有更好的方法,允许达到错误信息,并保持干净的公共API接口?

c++ api error-handling exception

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

未解析的外部符号_IID_IDXGIFactory

我在VC++ 2010中创建控制台应用程序,并向其添加以下代码:

#include <d3d10.h>
#include <d3dx10.h>
#include <DxErr.h>

#pragma comment(lib, "d3d10.lib")
#pragma comment(lib, "d3dx10.lib")
#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "dxerr.lib")

int _tmain(int argc, _TCHAR* argv[])
{
    IDXGIFactory* pDXGIFactory;
    CreateDXGIFactory(IID_IDXGIFactory, ( void** )&pDXGIFactory);

    return 0;
}

构建此项目,我有链接器错误:错误LNK2001:未解析的外部符号_IID_IDXGIFactory

现在我创建具有MFC支持的控制台应用程序,并添加相同的代码.构建成功.第一种情况有什么问题?为什么MFC项目成功构建,非MFC项目失败?

c++ directx linker visual-studio-2010 dxgi

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