小编LeC*_*Coc的帖子

对于Visual Studio,使用qmake在同一源代码树中构建32和64

我正在尝试添加一个必须在为Visual Studio 2010 64位配置的源树中构建为32位库(我们称之为sdk32)的项目.即每个项目都是64位库或应用程序,但我需要这个sdk32项目作为SDK的32位包装器.我知道在Linux中可以使用-m32标志来编译器(如此处所解释的那样使用QMAKE来构建项目的32位和64位版本); 但是有可能有一个类似的解决方案,所以在配置为VS2010 64bit(调用其vcvarsall.bat x64)的控制台中,在为我的树运行qmake -r后,我得到为x64配置的每个项目,但sdk32将配置为Win32的?它也适用于qmake -r -tp vc

到目前为止,我能想到的唯一解决方案是一个肮脏的技巧,调用一个脚本(如下所述:Qt:在运行之前运行一个脚本),它将"理解"vcxproj和Makefile中的x64标签并用Win32替换它们,但是这个解决方案对我来说似乎很脆弱,而且过于依赖于项目现在的样子,这将在未来以一种舒适的方式阻止对配置的更改.我确信之前已经发生了这种情况,但是谷歌搜索了近一天之后我找不到解决办法.有什么建议?

PS:"sdk32"项目根本不需要QT.问题是我们使用qmake作为Makefile和.vcxproj文件创建步骤(因为许多其他项目确实使用Qt).

qt qmake nmake visual-studio

6
推荐指数
0
解决办法
517
查看次数

使用互斥锁和手动锁定互斥锁的区别

具体来说,在 const 成员函数中,如果我mutex.lock()在它的开头和mutex.unlock()返回之前使用,在 OpenMP 循环中运行它时会崩溃。但是如果我QMutexLocker(&mutex)在函数的开头用一个替换这两个调用,它运行起来很顺利。Visual Studio 2010,Qt 4.8。我希望这两个代码是等价的,但显然不是。我在这里缺少什么?

编辑:虽然这不会重现问题,但一个小例子:

class TileCache
{
public:
    bool fillBuffer(const std::string& name) const {
        //QMutexLocker lock(&mCacheMutex);
        mCacheMutex.lock();
        auto ite = mCache.find(name);
        if(ite == mCache.end())
            mCache.insert(ite, std::make_pair(name, new unsigned char[1024]));
        // code here
        mCacheMutex.unlock();
        return true;
    }
private:
    mutable std::map<std::string, unsigned char*> mCache;
    mutable QMutex mCacheMutex;
};

int main(int argc, char *argv[])
{
    std::cout << "Test" << std::endl;
    TileCache cache;
#pragma omp parallel for shared(cache)
    for(int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c++ qt multithreading

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

使用std :: copy复制所有元素的地址

我正在尝试获取给定集合的所有元素的地址,并将它们复制到std :: set.基本上,而不是

std::set<T> s1;
std::copy(first1, last1, std::inserter(s1, s1.begin()));
Run Code Online (Sandbox Code Playgroud)

我想插入他们的地址.就像是:

std::set<std::add_pointer<T>> s1;
std::copy(reference_iterator(first1), reference_iterator(last1), 
    std::inserter(s1, s1.begin()));
Run Code Online (Sandbox Code Playgroud)

这里,reference_iterator将是一个迭代器,它返回其元素的地址而不是元素,这与boost indirect_iterator的作用相反.有没有标准的方法呢?非常感谢.

c++ boost iterator std

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

标签 统计

c++ ×2

qt ×2

boost ×1

iterator ×1

multithreading ×1

nmake ×1

qmake ×1

std ×1

visual-studio ×1