小编n. *_* m.的帖子

Python无法打开msvcr90.dll

我的Windows应用程序嵌入了Python 2.6(旧的我知道,但这是我们必须使用的).它可以运行基本的Python命令,但无法尝试执行

import ctypes
ctypes.WinDLL("msvcr90.dll")
Run Code Online (Sandbox Code Playgroud)

我收到错误126"无法找到DLL".如果我种植应用程序可以找到它的DLL,那么我得到错误1114"DLL初始化例程失败".

更新这可以通过这个最简单的程序重现:

#include <math.h>
#include <iostream>
#undef _DEBUG
#include <Python.h>

int main(int argc, char* argv[])
{
    Py_SetProgramName(argv[0]);
    Py_Initialize();
    PyRun_SimpleString("import pyreadline\n");
    Py_Finalize();
    std::cout << "Press enter: " << std::endl;
    char c;
    std::cin.read(&c, 1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在x86和amd64体系结构中使用V9或v10工具链进行编译时,这会失败.

回溯如下:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Python26-x86\lib\site-packages\pyreadline\__init__.py", line 9, in <m
odule>
    import unicode_helper, logger, clipboard, lineeditor, modes, console
  File "C:\Python26-x86\lib\site-packages\pyreadline\console\__init__.py", line
14, in <module>
    from console import *
  File "C:\Python26-x86\lib\site-packages\pyreadline\console\console.py", …
Run Code Online (Sandbox Code Playgroud)

python dll python-2.6 msvcr90.dll

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

替代lsof - 检测锁定文件

使用fcntl(非阻塞)或某种自定义方式锁定文件.所以我正在使用lsof并检查进程的pid是否在那里.如果lsof返回空白而不是没有使用它.

但是我的脚本中的lsof需要200ms.

在Windows上,当我尝试测试文件是否被锁定时,我只是打开文件,如果错误锁定,则需要5ms.是否有任何替代lsof进行快速测试,看看是否有东西被持有文件?

lsof

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

%ms和%s scanf之间的差异

阅读scanf手册我遇到这一行:

一个可选的'm'字符.这用于字符串转换(%s,%c,%[),

有人可以通过简单的例子来解释它,在某些情况下说明这种选择的区别和需要吗?

c gcc glibc scanf

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

如何将数据复制到 malloc 返回的指针?

以下是摘自真实 stackoverflow 问题的几个片段:

  1. table *temp = malloc(sizeof(table));
    temp = cursor->next;
    
    Run Code Online (Sandbox Code Playgroud)
  2. char students[][50] = { "Alan", "Bob", "Charles", "James", "Peter" };
    char (*heapStudents)[50] = malloc(sizeof(students));
    heapStudents = students;
    
    Run Code Online (Sandbox Code Playgroud)
  3. t = (struct carinfo_t *)malloc(sizeof(struct carinfo_t));
    t = carbase;
    
    Run Code Online (Sandbox Code Playgroud)
  4. char *str = (char *)malloc(20 * sizeof(char));
    str = "This is a string";
    
    Run Code Online (Sandbox Code Playgroud)
  5. struct node_t *temps = malloc(sizeof(struct node_t *));
    temps = src;
    
    Run Code Online (Sandbox Code Playgroud)

正如您所看到的,有一个清晰的模式。

   p = malloc(sizeof(something));
   p = something_else;
Run Code Online (Sandbox Code Playgroud)

难道是有什么问题吗?安全吗?有些人评论说“这不是指针在 C 中的工作方式”,但他们实际上是什么意思呢?

c

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

如何在Template Haskell中检查引用的数据构造函数名称?

我正在尝试学习一些模板Haskell.作为练习,我写的,可以生成诸如函数isLeftisRight(灵感来自这个问题).这是我谦虚的尝试:

isA connam = do
    ConE nam <- connam
    nn <- newName "p"
    lamE [varP nn] $ caseE (varE nn) [
                       match (conP nam [wildP]) ( normalB [| True |] ) [],
                       match wildP ( normalB [| False |] ) [] 
                     ]
Run Code Online (Sandbox Code Playgroud)

问题是它只适用于单参数构造函数.罪魁祸首是conP nam [wildP]模式.理想情况下,它看起来应该是conP nam (replicate (numArgs nam) wildP),numArgs函数返回构造函数的参数数量.但是我该如何编写这样的功能呢?我想我需要访问相关的数据声明,但我不知道如何.

这里有另外一个关于这个功能的问题.

haskell template-haskell

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

std :: forward <Args>或std :: forward <Args ...>?

我遇到了两种std::forward使用变量模板参数的变体.

template <typename... Args>
void foo(Args&&... arga)
{
    bar(std::forward<Args>(args)...);      // variant 1
    bar(std::forward<Args...>(args)...);   // variant 2

    // EDIT the above is a fixed version, the initial incorrect version was
    // bar(std::forward<Args>(args...));      // variant 1
    // bar(std::forward<Args...>(args...));   // variant 2

}
Run Code Online (Sandbox Code Playgroud)

我用g ++和clang尝试了两种变体,两者似乎同样有效.没有警告产生-Wall -Wextra -Wpedantic.

两种变体都正确吗?如果没有,为什么不呢?标准有什么说法呢?

variadic-templates c++11

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

C++ 11数组如何不存储它的大小?

来自cplusplus.com:

在内部,数组不保留除其包含的元素之外的任何数据(甚至不是它的大小,这是一个模板参数,在编译时固定).

我理解这意味着使用array类似于使用int[]sizeof在相同的范围内.但这段代码是有效还是依赖于未定义的行为?

class A {
    array<int, 10> arr;
    void setArr() {
        for (int& i : arr)
            i = 42;
    }
    void printArr() {
        for (int i : arr)
            cout << i << endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

编译器如何知道何时停止foreach而不将数组大小存储在堆或堆栈上?我运行它,代码工作.

c++ arrays c++11

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

我在方程式中输入一个双整数,但一直保持为0

我对C编程非常陌生,并且遇到了一个小问题。

我输入0.05作为双精度浮点数,并通过我的解决方案图片中给出的公式运行它,以获取答案0.06242。但是,无论输入什么内容,我都会不断得到0.000000。有人可以向我解释我的代码是否有问题,或者可以解释我在scanf和printf中是否正确使用“%lf”?谢谢。

解决我的问题

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main(){
    double guess, pow1,pow2,pow3, estimate;
    printf("Type in an initial guess of the root(for this case type 0.05):  ");
    scanf("%lf", &guess);

    printf("Calculating the root estimate using formula from solution...\n");
    pow1 = pow(guess, 3);
    pow2 = 0.165*pow(guess, 2);
    pow3 = 3*pow(guess, 2);

    estimate = guess - ((pow1 - pow2 + 0.0003993) / (pow3 - 0.33*guess));
    printf("Estimate = %lf\n", estimate);
}
Run Code Online (Sandbox Code Playgroud)

c

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

什么是循环包含依赖项,为什么它不好以及如何修复它?

假设我有两个相互引用的数据结构。我想将它们放入单独的头文件中,如下所示:

\n
 // datastruct1.h\n #ifndef DATA_STRUCT_ONE\n #define DATA_STRUCT_ONE\n\n #include <datastruct2.h>\n typedef struct DataStructOne_t\n {\n   DataStructTwo* two;\n } DataStructOne;\n #endif\n
Run Code Online (Sandbox Code Playgroud)\n

\n
 // datastruct2.h\n #ifndef DATA_STRUCT_TWO\n #define DATA_STRUCT_TWO\n\n #include <datastruct1.h>\n typedef struct DataStructTwo_t\n {\n   DataStructOne* one;\n } DataStructTwo;\n\n #endif\n
Run Code Online (Sandbox Code Playgroud)\n

我有一个main功能:

\n
 #include <datastruct1.h>\n #include <datastruct2.h>\n\n int main() \n {\n    DataStructOne* one;\n    DataStructTwo* two;\n }\n
Run Code Online (Sandbox Code Playgroud)\n

然而我的编译器抱怨:

\n
$ gcc -I. -c main.c\nIn file included from ./datastruct1.h:4,\n                 from main.c:1:\n./datastruct2.h:8:2: error: unknown type name \xe2\x80\x98DataStructOne\xe2\x80\x99\n    8 |  DataStructOne* one;\n …
Run Code Online (Sandbox Code Playgroud)

c c++ include

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

什么是空终止字符串?

它们与非空终止字符串有何不同?终止字符串的这个 null 是什么?和NULL有什么不同吗?我应该自己以空终止我的字符串,还是编译器会为我做这件事?为什么需要空终止字符串?如何设置代码/数据来处理空终止字符串?

c c-strings null-terminated

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