小编Tom*_*lny的帖子

如何在编译期间强制cmake包含"-pthread"选项?

我知道有类似的东西,find_package(Threads)但它似乎没有什么区别(至少本身).现在我正在使用SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-pthread"),但它对我来说看起来不是一个正确的解决方案.

build-automation gcc build cmake

37
推荐指数
3
解决办法
4万
查看次数

c ++ 11中的命名空间问题?

有人可以解释一下:

$ cat test.cpp 
#include <string>
std::string div;
$ g++ -c test.cpp 
$ g++ -std=c++11 -c test.cpp 
test.cpp:2:13: error: 'std::string div' redeclared as different kind of symbol
In file included from /usr/include/c++/4.7.1/cstdlib:66:0,
                 from /usr/include/c++/4.7.1/ext/string_conversions.h:37,
                 from /usr/include/c++/4.7.1/bits/basic_string.h:2814,
                 from /usr/include/c++/4.7.1/string:54,
                 from test.cpp:1:
/usr/include/stdlib.h:787:14: error: previous declaration of 'div_t div(int, int)'
$
Run Code Online (Sandbox Code Playgroud)

对于C++ 11模式,div符号是否也不应该在std命名空间中?或者它是我的系统特有的东西?

c++ gcc glibc c++11

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

将历史记录添加到git存储库或合并git存储库

每个人都通过"合并git存储库"来理解不同的东西,所以这是我的情况.我们有一个TFS存储库,我们已经在一个时间点检查了源代码并进行了初始git提交.然后我们在git(分支,合并等)中进行了正常的开发.问题是在新的存储库中我们没有git存储库中的历史记录,我们想解决这个问题.因此,我已将整个TFS存储库转换为git存储库,现在我需要将转换后的TFS存储库与当前的git存储库合并.

如从上面的描述中变得很明显储存库是独立的从GIT中的观点来看,但从逻辑上看它们有一个共同提交(提交,成为初始提交到当前git仓库).

如何在不丢失任何历史记录的情况下合并这些回购?我可以将转换后的TFS repo作为基础,然后从当前仓库的master获取更改,但这不会导入在当前仓库中创建的所有分支.

git merge

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

vs2012工具集兼容性

在我的VS2012中,我有4个可用的工具集:v90,v100,v110和v110_xp.我用两个项目testlib(静态库)和testexe(控制台应用程序)做了一个简单的测试.界面只是一个带签名的功能void test().结果:

  • testlib(v90),testexe(v90以外的任何东西) - >不链接
  • testlib(v100),testexe(v110或v110_xp) - >确实链接

但是,对我来说,v100和v110会链接起来似乎有些奇怪,所以我试着让场景复杂一点.现在我的方法看起来像这样:std::map<std::string, std::string> test(const std::string& arg).正如所料,testlib(v100)和testexe(v110)没有链接(mismatch detected for '_MSC_VER').

但仍然testlib(v110)和testexe(v110_xp)进行链接,结果exe在Windows XP上运行.这只是偶然的还是支持的情况?如果这只是偶然的话,那么仅使用v110_xp中可用功能并打破这种兼容性的示例代码将是受欢迎的.我想知道是否应该将我的库的两个版本部署到我的客户端,或者只是用v110编译的那个版本.

c++ msvcrt visual-c++ visual-studio-2012

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

列出可用的平台工具集

是否有任何方法可以列出VS2012中可用的平台工具集?我的意思是列表可能包含v90,v100,v110,v110_xp和任何外部提供的平台工具集.或者(应该更容易):有没有办法检查是否安装了给定的平台工具集?

msvcrt visual-c++ visual-studio-2012

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

xunit和System.Interactive.Async

我试图在我的.NET Core 1.0解决方案中运行单元测试.当我运行一个空的测试它工作正常.但是,只要我尝试创建ApplicationDbContext的新实例,测试就会失败并出现以下异常:

  System.IO.FileLoadException : Could not load file or assembly 'System.Interactive.Async, Version=3.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
  Stack Trace:
       at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServiceCollectionExtensions.AddQuery(IServiceCollection serviceCollection)
       at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServiceCollectionExtensions.AddEntityFramework(IServiceCollection serviceCollection)
       at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.<GetOrAdd>b__1(Int64 k)
       at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
       at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options)
(2 more stack trace lines from my code)
Run Code Online (Sandbox Code Playgroud)

不知道为什么需要System.Interactive.Async,但我将它作为依赖项添加到我的Tests项目中.但是,在构建时,dll似乎不会复制到bin\Debug \netcoreapp1.0文件夹中.如果我手动复制它的效果完全相同.任何想法我还能做些什么才能让它发挥作用?

.net entity-framework xunit.net .net-core

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

.net 默认事件处理程序

在我的产品中,我需要处理广泛的事件。为此,我使用了这样的代码:

public class Global
{
    public static event EventHandler<MyEventArgs> Message;
    public static void ShowMessage();
}
Run Code Online (Sandbox Code Playgroud)

现在假设我有一个 WinForms 用户界面。在表单的代码中,我将订阅此事件并以某种默认方式处理它(例如,通过使用 System.Windows.Forms.MessageBox.Show() 方法)。现在的问题是如何允许用户创建派生表单并覆盖我的默认 Message 事件处理程序实现?

仅使用自定义实现第二次订阅事件并不能解决问题(将执行两个事件处理程序并可能显示两个消息框)。我看到的选项是:

//call OnSubscribeToMessageEvent() from either form's constructor or OnLoad event handler
protected virtual void OnSubscribeToMessageEvent()
{
    Global.Message += new EventHandler<MyEventArgs>(Global_Message);
}
private void Global_Message(object sender, MyEventArgs e)
{
    //my default implementation
}
Run Code Online (Sandbox Code Playgroud)

或者

//subscribe in either form's constructor or OnLoad event handler
protected virtual void Global_Message(object sender, MyEventArgs e)
{
    //my default implementation
}
Run Code Online (Sandbox Code Playgroud)

哪个版本更好,为什么?或者也许还有其他选择?

.net c# design-patterns

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

挑选一个删除文件的提交

我需要将多个存储库(每个存储库都是从TFS转换而来)合并为一个。为此,我使用 gitcherry-pick 命令,该命令适用于某些提交,但不适用于其他提交:

$ git status
# On branch master
nothing to commit, working directory clean
$ git diff-tree --no-commit-id --name-only -r e2d8405
Libraries/IFileTransformer/ITransformer.cs
Libraries/IFileTransformer/IFileTransformer.csproj
Libraries/IFileTransformer/IFileTransformer.csproj.vspscc
Libraries/IFileTransformer/Properties/AssemblyInfo.cs
$ git cherry-pick e2d8405
error: could not apply e2d8405... TFS changeset 2836
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
$ git status
# On branch master
# You are currently cherry-picking.
# …
Run Code Online (Sandbox Code Playgroud)

git

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

wpf上下文菜单左键单击

是否可以将上下文菜单附加到wpf控件并在左键单击时打开它(而不是更常见的右键单击)?我想只使用xaml实现它(这应该是我的控件的视图模板的一部分).

c# wpf user-interface contextmenu

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

C++移动/删除符号

假设我有一个.cpp文件,我必须在其中包含一个声明某个符号的第三方头文件(让我们称之为div).我不需要这个符号,但我需要定义自己的div符号.但是,原始符号可能会被头文件的其他部分使用.是否可以从全局命名空间中删除符号(类似于undef宏)?

我想要这样的东西:

#include <string> //stdlib.h defines div symbol
//do some symbol removal magic here
std::string div;
Run Code Online (Sandbox Code Playgroud)

用gcc-4.7/clang和-std=c++11选项编译.

c++ c++11

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

SQL Server 中的命名实例有哪些好处?

在 SqlLocalDB 中创建命名实例而不是使用默认的 v11.0 实例有什么好处?在我的场景中,我使用连接字符串中的 AttachDbFileName 选项附加数据库文件。

一个帮助问题:是否可以对不同的 LocalDB 实例有不同的设置?如果是这样,什么样的设置(我读到你不能更改例如排序规则)?

sql-server sql-server-2012 localdb

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