将 python str 作为 LPCSTR 传递给 c++ dll

问题描述 投票:0回答:1

我有一个简单的 c++ dll,它调用 MessageBox 来显示文本

#include <Windows.h>

#define LIBDLL extern "C" __declspec(dllexport)

LIBDLL void Display(LPCTSTR lpInput) {
    MessageBox(0, lpInput, 0, 0);
}

bool __stdcall DllMain(void* hModule, unsigned long dwReason, void* lpReserved) {
switch (dwReason)
{

case 1:
    break;
case 0:
    break;

case 2:
    break;

case 3:
    break;

}

return true;
}

Python代码只将一个字符串传递给dll中的Display,它看起来像这样

import ctypes
sampledll = ctypes.WinDLL('SampleDll.dll')
sampledll.Display('Some Text')

即使我使用 std::cout,它也只显示第一个字母

如何让它显示我传递给它的所有文本?

python c++ winapi dll lpcstr
1个回答
1
投票

终于解决这个问题了。结果我必须先对文本进行编码,然后再将其传递给 dll。

所以不要这样做

sampledll.Display('Some Text')

应该这样做

sampledll.Display('Some Text'.encode('utf-8))
© www.soinside.com 2019 - 2024. All rights reserved.