簡體   English   中英

c ++ python 3綁定

[英]c++ python 3 binding

我試圖在C ++中綁定python3。

使用時:

Py_SetProgramName(argv[0]);

它給出了這個錯誤:

error C2664: 'Py_SetProgramName' : cannot convert parameter 1 from 'char *' to 'wchar_t *'

即使這是文檔示例顯示的方式。

我也試過這個:

Py_SetProgramName((wchar_t*)argv[0]);

但顯然這是錯誤的做法

那么我該如何解決這個問題呢,在C ++中綁定Python 3還有其他好的資源嗎?

試試以下:

wchar_t progname[FILENAME_MAX + 1];
mbstowcs(progname, argv[0], strlen(argv[0]) + 1);
Py_SetProgramName(progname);

http://www.cplusplus.com/reference/cstdlib/mbstowcs/

從char轉換為wchar_t的官方方法現在是:

wchar_t *program = Py_DecodeLocale(argv[0], NULL);
Py_SetProgramName(program);

一方面,mbstowcs在某些平台上不可靠。

使用python2 / 3和c ++的一個很好的例子是Panda3D。 一個用python編寫的c ++游戲引擎,它還提供了一個c ++模塊構建器。

我建議你看看這個問題

Python 3 API的示例文檔似乎尚未從Python 2升級 - 您展示的示例就是其中之一(我已經報告了其他一些)。

我在這方面沒有找到好的文件。 即使是着名的Python書籍的新(Python 3)版本也要么稀疏地覆蓋這個主題,要么有代碼錯誤(通常因為代碼來自Py2)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM