小编Alb*_*ert的帖子

Windows/C++:如何使用未注册的COM dll

在我们的应用程序中,我们需要使用之前未在系统中注册的COM dll(即msdia100.dll).

厄勒,我们刚刚通过以下代码调用其DllRegisterServer来调用DLL:

// Register DIA DLL required by Breakpad
std::string diaLibPath = "msdia100";    
HMODULE diaLib = LoadLibrary(diaLibPath.c_str());
if( diaLib == NULL )
{
    errors << "Cannot load DLL " << diaLibPath << endl;
    return;
}

typedef HRESULT ( __stdcall * regServer_t )(void);

regServer_t regServer = (regServer_t)GetProcAddress(diaLib, "DllRegisterServer");
if( regServer == NULL )
{
    errors << "Cannot get method DllRegisterServer from " << diaLibPath << endl;
    FreeLibrary(diaLib);
    return;
}
if( regServer() != S_OK )
{
    errors << "Cannot call DllRegisterServer …
Run Code Online (Sandbox Code Playgroud)

c++ windows dll

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

MacOSX上的g ++不能与-arch ppc64一起使用

我正在尝试使用g ++在MacOSX上构建通用二进制文件.但是,它并没有真正起作用.我试过这个简单的虚拟代码:

#include <iostream>
using namespace std;
int main() {
    cout << "Hello" << endl;
}
Run Code Online (Sandbox Code Playgroud)

这很好用:

% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -o test
% file test
test: Mach-O universal binary with 3 architectures
test (for architecture i386):   Mach-O executable i386
test (for architecture ppc7400):    Mach-O executable ppc
test (for architecture x86_64): Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)

但是,这不是:

% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -o test
In file included from test.cpp:1:
/usr/include/c++/4.2.1/iostream:44:28: …
Run Code Online (Sandbox Code Playgroud)

macos g++ universal-binary

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

在变量中解压缩字符串

在Bash中,我可以使用以下代码:

[ "$sshcmd" = "" ] && sshcmd="ssh -someopts myhost"

$sshcmd "echo hello world"
Run Code Online (Sandbox Code Playgroud)

在ZSH中,相同的代码不起作用,因为它试图找到"ssh -someopts myhost"可执行文件.我怎样才能在ZSH中做同样的事情?

谢谢,艾伯特

variables zsh

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

简化简单的C++代码 - 就像Pythons一样

现在,我有这个代码:

bool isAnyTrue() {
    for(std::list< boost::shared_ptr<Foo> >::iterator i = mylist.begin(); i != mylist.end(); ++i) {
        if( (*i)->isTrue() )
            return true;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

我已经在这里使用过Boost但是我真的不记得任何简单的方法来编写它有点像我可能用Python编写它,例如:

def isAnyTrue():
    return any(o.isTrue() for o in mylist)
Run Code Online (Sandbox Code Playgroud)

在STL/Boost中是否有任何构造或多或少像这样写?

或者也许是这个Python代码的等价物:

def isAnyTrue():
    return any(map(mylist, lambda o: o.isTrue()))
Run Code Online (Sandbox Code Playgroud)

大多数情况下,我想知道Boost/STL中是否存在任何现有的any(和all)等价物.或者为什么没有(因为它看起来非常有用,我经常在Python中使用它).

c++ python any

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

JVM中包含哪些功能

JVM的功能是什么?我所知道的是:

  • JIT编译器
  • GC
  • 内存分配器

加载Java应用程序时它执行的步骤是什么?

我想知道,因为如果我将Java应用程序的加载时间与这些步骤进行比较:

  • InitializeNativeTarget 在LLVM上
  • 一些GC初始化
  • 一些Qt/GTK /无论init
  • 一些JIT /提前编译部分应用程序
  • app init本身

在我看来,JVM的加载时间比上面列出的步骤要长得多.那除了那之外还做了什么呢?

java jit jvm llvm

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

有什么可能的原因可能会阻塞Linux上的虚拟终端?

还是某个进程或某些其他事物可能完全阻塞虚拟终端?还是尝试访问VT1时应用程序挂起的原因可能是什么?

似乎在发生这种情况的同时,它仍挂在函数中ioctl。特别是,这是失败的代码:

int vtno = 1;
const char* vtname = "/dev/tty1";

int fd = open(vtname, O_RDWR|O_NDELAY, 0);

if (ioctl(fd, VT_ACTIVATE, vtno) < 0)
  printf("VT_ACTIVATE failed: %s\n", strerror(errno));

if (ioctl(fd, VT_WAITACTIVE, vtno) < 0)
  printf("VT_WAITACTIVE failed: %s\n", strerror(errno));
Run Code Online (Sandbox Code Playgroud)

它挂在第二个ioctl。当我中断它时,我收到以下消息:

VT_WAITACTIVE failed: Interrupted system call
Run Code Online (Sandbox Code Playgroud)

另外,当它在那里等待时,如果我chvt 1从另一个终端进行操作,那也会挂起。

linux console ioctl tty

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

MacOSX:附带附件的新邮件

我想用默认的邮件客户端创建一个新邮件,并自动附加一个文件.

要创建一个dummy@somewhere.com包含主题foo和正文的新邮件bar,我可以执行以下操作:

open "mailto:dummy@somewhere.com?subject=foo&body=bar"
Run Code Online (Sandbox Code Playgroud)

我现在如何附加文件?

如果这种方式不可能(有open),我的替代方案是什么?

我更喜欢使用Java和本地语言(C++,ObjC)的解决方案.因此,如果有一种方法通过shell来做到这一点,这将使我很容易,因为我可以产生这样的进展.

否则我将不得不回到某个SMTP引擎,只写一个自己的小邮件发件人.

email macos smtp

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

Git:如何将 rebase 与他们的策略结合使用

基本上,我只想(重新)设置A特定提交(commit)的父级(比方说提交B),这是某个分支的根提交x。在其中一个答案中建议我可以通过移植来做到这一点。稍后我会尝试一下,也许这是更好的方法。

然而,在阅读本文之前,我认为这应该可以通过rebase. 但是因为父提交A有点不同B,我只想保持整个分支的x原样,只需将父提交设置为其根提交B,我想我可能会使用该theirs策略 - 这似乎不存在。我早些时候偶然发现了这一点(并认为这是一个错误或在我的 Git 安装中),并且总是通过切换分支和使用策略来解决ours。然而,在这种情况下rebase,我被迫使用该theirs策略。

我的命令如下所示:

git rebase -s theirs --onto A --root x x--rebased
Run Code Online (Sandbox Code Playgroud)

git rebase

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

在Python中快速动态代码执行的可能性

我在某种形式的AST中有一些代码,我想执行它.

我可以想到几种方法,例如:

  • 只是直截了当地解释它.
  • 将其转换为Python AST(ast模块)和
    • Python- compile那或
    • Python- eval那.
  • 将其转换为Python源代码(例如纯字符串)和
    • Python- compile那或
    • Python- eval那.
  • 以某种形式的低级代码翻译它,并在Python中编写一个简单的VM来运行它.

我想我会通过将它转换为Python AST来获得禁食执行compile,然后运行它.ESP.当使用PyPy时,我甚至可能通过PyPys JIT编译优化得到改进(我希望我这样做,是吗?).

你能想到其他可能性吗?你能就什么是最好的方式提出建议吗?

python scripting jit abstract-syntax-tree vm-implementation

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

Python AST:几个语义不清楚,例如expr_context

是否有关于该模块的ast文档ast

Esp.,我想知道expr_context(及其所有可能的值)究竟意味着什么.

另外,Assign和之间有什么区别AugAssign

此外,在对局部变量进行赋值时,可以引用真正的Python对象而不是其名称吗?我自己构建一个AST,我有一些Python对象,我想在AST中访问它.另一种方法是为它们引入一些虚拟的临时var名称,并将该虚拟var名称添加到globals()后来编译函数的作用域中,但这对我来说似乎有点糟糕(缓慢和笨拙).

python abstract-syntax-tree

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