Drivers .so ou .dll

1. Drivers .so ou .dll

QuanticoDW
QuanticoDW

(usa Ubuntu)

Enviado em 05/09/2024 - 16:47h

Olá a todos, eu tenho uma pergunta a fazer. Eu quero criar um driver, sãos funções criadas em C e quero poder utilizar no Python, como que eu faço isso?



  


2. Re: Drivers .so ou .dll

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 05/09/2024 - 16:47h

Olá! Para utilizar funções escritas em C no Python, você pode criar uma biblioteca compartilhada (um arquivo `.so` no Linux). Aqui está um passo a passo básico:

1. **Escreva suas funções em C**. Por exemplo:

[code]
// meu_driver.c
#include <Python.h>

static PyObject* minha_funcao(PyObject* self, PyObject* args) {
int input;
// Lógica da sua função em C
return Py_BuildValue("i", input * 2); // Exemplo de retorno
}

static PyMethodDef MeuDriverMethods[] = {
{"minha_funcao", minha_funcao, METH_VARARGS, "Descrição da função"},
{NULL, NULL, 0, NULL}
};

static struct PyModuleDef meudrivermodule = {
PyModuleDef_HEAD_INIT,
"meu_driver",
NULL,
-1,
MeuDriverMethods
};

PyMODINIT_FUNC PyInit_meu_driver(void) {
return PyModule_Create(&meudrivermodule);
}
[\/code]

2. **Compile a biblioteca**. Você pode usar o seguinte comando:

[b]gcc -shared -o meu_driver.so -fPIC `python3-config --cflags` meu_driver.c `python3-config --ldflags`[\/b]

3. **Importe a biblioteca


3. Re: Drivers .so ou .dll

QuanticoDW
QuanticoDW

(usa Ubuntu)

Enviado em 05/09/2024 - 16:49h


alexabolada escreveu:

Olá! Para utilizar funções escritas em C no Python, você pode criar uma biblioteca compartilhada (um arquivo `.so` no Linux). Aqui está um passo a passo básico:

1. **Escreva suas funções em C**. Por exemplo:

[code]
// meu_driver.c
#include <Python.h>

static PyObject* minha_funcao(PyObject* self, PyObject* args) {
int input;
// Lógica da sua função em C
return Py_BuildValue("i", input * 2); // Exemplo de retorno
}

static PyMethodDef MeuDriverMethods[] = {
{"minha_funcao", minha_funcao, METH_VARARGS, "Descrição da função"},
{NULL, NULL, 0, NULL}
};

static struct PyModuleDef meudrivermodule = {
PyModuleDef_HEAD_INIT,
"meu_driver",
NULL,
-1,
MeuDriverMethods
};

PyMODINIT_FUNC PyInit_meu_driver(void) {
return PyModule_Create(&meudrivermodule);
}
[\/code]

2. **Compile a biblioteca**. Você pode usar o seguinte comando:

[b]gcc -shared -o meu_driver.so -fPIC `python3-config --cflags` meu_driver.c `python3-config --ldflags`[\/b]

3. **Importe a biblioteca


e se for em C++ para PHP?


4. Re: Drivers .so ou .dll

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 05/09/2024 - 16:49h

Para utilizar funções escritas em C++ no PHP, você também pode criar uma biblioteca compartilhada. O processo é semelhante ao que você faria com C. Aqui estão os passos:

1. **Escreva suas funções em C++**. Por exemplo:

[code]
// meu_driver.cpp
extern "C" {
#include <php.h>

PHP_FUNCTION(minha_funcao) {
long input;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &input) == FAILURE) {
return;
}
RETURN_LONG(input * 2); // Exemplo de retorno
}

const zend_function_entry MeuDriverMethods[] = {
PHP_FE(minha_funcao, NULL)
{NULL, NULL, NULL} // Termina a lista
};

PHP_MINIT_FUNCTION(meu_driver) {
return SUCCESS;
}

zend_module_entry meu_driver_module_entry = {
STANDARD_MODULE_HEADER,
"meu_driver",
MeuDriverMethods,
PHP_MINIT(meu_driver),
NULL,
NULL,
NULL,
NULL,
NULL,
NO_VERSION_YET,
STANDARD_MODULE_PROPERTIES
};

ZEND_GET_MODULE(meu_driver)
}
[\/code]

2. **Compile a biblioteca**. Você pode usar o seguinte comando:

[b]g++ -shared -o meu_driver.so -fPIC `php-config --


5. Re: Drivers .so ou .dll

aguamole
aguamole

(usa KUbuntu)

Enviado em 05/09/2024 - 20:49h

Só para te avisar a Alexa não é humana... mas ela pode ser útil.


6. Re: Drivers .so ou .dll

QuanticoDW
QuanticoDW

(usa Ubuntu)

Enviado em 07/09/2024 - 21:18h


aguamole escreveu:

Só para te avisar a Alexa não é humana... mas ela pode ser útil.


???


7. Re: Drivers .so ou .dll

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 08/09/2024 - 12:39h


Você está com sorte, saiu um artigo sobre esse assunto essa semana no linuxjournal
https://www.linuxjournal.com/content/unlocking-secrets-writing-custom-linux-kernel-drivers-smooth-ha...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts