在sharedlib中使用python的c++代码控制LCD

2024-06-07 12:47:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我的项目是在我的树莓B2上用ST7565控制器控制液晶显示器 我试着用这个c++代码来控制lcd: https://github.com/stephanel/ST7565-RPi

不幸的是,我不熟悉用C编程,因此我想用cype从python调用C++函数。在

我写了一个简单的(对我来说很简单)c++代码来用作共享库

在lcdcontrol.cpp公司名称:

#include <iostream>
#include <ctime>
#include <sstream>
#include <wiringPi.h>
#include <wiringShift.h>
#include "ST7565/ST7565.cpp"

using namespace std;
ST7565 glcd(PIN_SID, PIN_SCLK, PIN_A0, PIN_RST, PIN_CS);

void start();
void drawclock();
void setpix();
void clear();
void drawstring();
void drawbitmap();

void start(){
    glcd.begin(0x18);
    glcd.display();}

void setpix() {
    glcd.setpixel(10, 10, BLACK);}

void clear() {
    glcd.clear();}

void drawstring() {
    glcd.drawstring(0, 0, "Test string");}

我的python测试代码:

^{pr2}$

现在我必须把我的c++代码编译到一个共享库中。我试了好几种方法。但是没有什么是没有问题的。 当我运行python代码时,它返回找不到wiringpi库的“digitalwrite”函数,或者我得到一个错误,它找不到“start”函数。在

谁能帮帮我吗。我快疯了。。。 也许有一种完全不同的方法来使用python的st7565c++代码。但这对我来说似乎是最简单的方法…直到现在。。。在


Tags: 项目方法函数代码includepinstartcpp
2条回答

谢谢你的帮助,真管用!在

这是我使用的makefile:

all:
    g++ -fPIC -shared -o lcdcontrol.so -I/usr/local/include -L/usr/local/lib -lwiringPi lcdcontrol.cpp
    sudo cp lcdcontrol.so /usr/lib/lcdcontrol.so

海里lcdcontrol.so退货:

^{pr2}$

在python代码中,我现在可以使用:

mylcd._Z5startv()
mylcd._Z6setpixv()
mylcd._Z10drawstringv()

而且很管用!在

因为你对C不熟悉,我想你犯了和我一样的错误。您不关心C++中的名字MangelEng.在

http://en.wikipedia.org/wiki/Nm_%28Unix%29

请展示如何导出函数。在

其他信息可以在这里找到:Python: accessing DLL function using ctypes access by function *name* fails

相关问题 更多 >

    热门问题