小编A.F*_*ell的帖子

如何在cmake中使用autouic将header和ui文件放在不同的文件夹中

根据文档,关于autouic:

如果找到与ui_.h匹配的预处理程序#include指令,并且存在.ui文件,则将执行uic以生成相应的文件.

但是如果.ui文件在另一个文件夹中呢?我在尝试构建时遇到以下错误:

AUTOUIC : error : process for ui_module.h failed:
File 'C:/app/source/headers/module.ui' is not valid
Run Code Online (Sandbox Code Playgroud)

ui文件实际上位于此处:

C:/app/source/forms/module.ui
Run Code Online (Sandbox Code Playgroud)

我试图添加C:/app/source/forms/include_directories()-macro但没有成功.有任何想法吗?

c++ qt cmake

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

dlclose() 不卸载链接到 boost 的 .so-file

如果我的应用程序加载(使用 dlopen)一个 .so 文件,该文件链接到 Boost 测试框架,我将无法卸载 so 文件。没有链接到 boost 似乎可以卸载它。

应用文件main.cpp:

#include <dlfcn.h>
#include <iostream>

int main()
{
   auto sFileName = "./libtest_library.so";
   auto handle = dlopen(sFileName, RTLD_LAZY | RTLD_LOCAL);

   if (!handle) 
      std::cerr << "Error: " << dlerror() << std::endl;

   auto closing = dlclose(handle);
   while(1);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

库 .so 文件 (libtest_library.so):

#include <iostream>
//#include "boost/test/unit_test.hpp"

static void con() __attribute__((constructor));
static void dcon() __attribute__((destructor));

void con()
{
   std::cout << "Constructing library..." << std::endl;
}

void dcon()
{
   std::cout << "Destructing library..." …
Run Code Online (Sandbox Code Playgroud)

c++ linux boost

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

使用**或*&为函数中的参数分配内存

我已经看到了两种不同的解决方案,如何为函数中的参数分配内存:

使用**:

template <class T>
void funcPP(T ** ppnDynamicInt) {
    *ppnDynamicInt = new T;
}
Run Code Online (Sandbox Code Playgroud)

VS

使用*&

template <class T>
void funcRP(T *& pnDynamicInt) {
    pnDynamicInt = new T;
}
Run Code Online (Sandbox Code Playgroud)

使用函数的示例 - >

int * pnDynamicInt;
funcPP(&pnDynamicInt);
funcRP(pnDynamicInt);//memory leak I know ;)
Run Code Online (Sandbox Code Playgroud)

什么被认为是更安全/更好的风格?一种解决方案更有效吗?

(注意:我知道智能指针会更好:))

c++

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

标签 统计

c++ ×3

boost ×1

cmake ×1

linux ×1

qt ×1