小编KSl*_*moe的帖子

在TIFF中创建带缩略图的子IFD(libtiff)

我知道thumbnail.c包含一些创建缩略图并将其放在子IDF中的代码,但是代码中有很多(生成缩略图,应用对比曲线等),我很难再现写一个缩略图.谷歌也没有任何帮助.

我的问题是,在我打开一个输出文件并且有一个TIFF*之后,我的缩略图数据都已准备就绪(以及我的主图像数据),如何以缩略图所在的方式添加它们主图像IFD的子IFD?

c++ tiff thumbnails libtiff

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

Enterprise Architect项目编程语言

在Enterprise Architect中,当我为类建模并指定类的实现语言,然后在用例中使用类的实例时,用例中实例的实现语言不是类的实现语言,而是默认.有没有办法让Enterprise Architect使用该类的集合实现语言作为该类所有实例的实现语言?

settings enterprise-architect

7
推荐指数
2
解决办法
8469
查看次数

WinAPI C++客户端在读取之前检测匿名管道上的写入

我正在编写一个C++(Windows)客户端控制台应用程序,它从STDIN上的匿名管道读取.我希望能够使用我的程序如下:

echo input text here | my_app.exe
Run Code Online (Sandbox Code Playgroud)

并使用管道输入的文本在应用程序中执行某些操作

要么

my_app.exe
Run Code Online (Sandbox Code Playgroud)

然后在应用程序内部使用一些默认文本而不是管道输入.

鉴于第一种情况,我目前有代码可以在STDIN上成功读取管道:

#include <Windows.h>
#include <iostream>
#include <string>

#define BUFSIZE 4096

int main(int argc, const char *argv[]) {
    char char_buffer[BUFSIZE]; 
    DWORD bytes_read;
    HANDLE stdin_handle;
    BOOL continue_reading;
    unsigned int required_size;
    bool read_successful = true;

    stdin_handle = GetStdHandle(STD_INPUT_HANDLE);

    if (stdin_handle == INVALID_HANDLE_VALUE) {
        std::cout << "Error: invalid handle value!\n\n";
    } else {
        continue_reading = true;

        while (continue_reading) { 
            continue_reading = ReadFile(stdin_handle, char_buffer, BUFSIZE,
                &bytes_read, NULL); 

            if (continue_reading) {
                if (bytes_read != 0) …
Run Code Online (Sandbox Code Playgroud)

winapi pipe visual-c++

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

Python ctypes.string_at释放行为

我正在使用ctypes将某些C函数从DLL公开给Python脚本。其中一个函数返回一个动态调整大小的字符数组,我希望能够在Python中读取该数组的内容,而且还希望在完成处理后释放该数组的内存。

示例C代码:

...

#ifdef __cplusplus
extern "C"
{
#endif
    __declspec(dllexport) char * WINAPI get_str()
    {
        int str_len = ... // figure out how long it is gonna be and set it here
        char *ary = (char *)malloc(sizeof(char) * str_len);

        // populate the array
        ...

        ary[str_len - 1] = '\0';

        return ary;
    }

#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)

我构建了DLL,将其复制到将被找到的位置,然后具有以下Python代码:

import ctypes

my_dll = ctypes.WinDLL("MyDLLName.dll")

some_str = ctypes.string_at(my_dll.get_str())

print some_str
Run Code Online (Sandbox Code Playgroud)

这段代码都可以正常工作。我的问题是:由于ctypes.string_at在指定的内存位置创建了一个字符串,当some_str超出Python解释器的范围时,该内存将被垃圾回收,还是我需要手动释放它?

python ctypes memory-management

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

GlobalMemoryStatusEx线程安全吗?

MSDN页面:

"GlobalMemoryStatusEx函数返回的信息是易失性的.无法保证对此函数的两次连续调用将返回相同的信息."

这是有道理的,但我无法确定这是否是线程安全的.有人知道这种或那种方式吗?我试过谷歌搜索但无法找到这些信息.

c++ windows thread-safety

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