Forum > Portuguese

como usar uma dll escrito em c

(1/2) > >>

affonso:
Olá a todos eu estou tentando usar uma simples dll escrito em c no meu programa feito em fpc. Estou usando o opensuse 15.2

este é o código em c.


--- Code: C  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---//arquivo dll.c#include <stdio.h> int dll(){    printf("dll()\n");    return 0;}
// estou usando o seguinte comando para gerar a dll
//gcc -c dll.c -fpic
//gcc -shared -o libdll.so dll.o

este é o programa feito em fpc


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---program teste;// Importa função dllfunction add(): Integer; cdecl; external 'libdll.so';begin //main add();end.
Estou usando o comando fpc teste.pas para gerar o programa execultável, mas aparece a seguinte mensagem de erro


--- Code: Text  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---Free Pascal Compiler version 3.2.0 [2020/12/18] for x86_64Copyright (c) 1993-2020 by Florian Klaempfl and othersTarget OS: Linux for x86-64Compiling teste.pasLinking teste/usr/bin/ld: teste.o: in function `main':teste.pas:(.text.n_main+0xa): undefined reference to `add'teste.pas(11,1) Error: Error while linkingteste.pas(11,1) Fatal: There were 1 errors compiling module, stoppingFatal: Compilation abortedError: /usr/bin/ppcx64 returned an error exitcode
Alguém poderia me ajudar? desde já agradeço.

quando eu comento na linha add(); o programa até compila mas quando eu executo o programa aparece a seguinte msg:
./teste: error while loading shared libraries: libdll.so: cannot open shared object file: No such file or directory


[Editado para adicionar tags de código - consulte Como usar os fóruns]



Gustavo 'Gus' Carreno:
Boas Afonso,


--- Quote from: affonso on April 10, 2021, 04:51:11 am ---Olá a todos eu estou tentando usar uma simples dll escrito em c no meu programa feito em fpc. Estou usando o opensuse 15.2

--- End quote ---

Recentemente houve alguém que fez a mesma pergunta e foi-lhe dado uma série de respostas.

Como está a tua leitura de Inglês?

Grande abraço,
Gus

Gustavo 'Gus' Carreno:
Boas Afonso,

Não consegui encontrar o thread, mas tenho o zip com o exemplo que foi dado nesse thread.

A dll é criada em Lazarus e não C, mas como usar-la está bem exemplificado.

Infelizmente não te posso ajudar com a parte C das coisas. No entanto, parece-me que não publicas(exports) a funcção add da tua lib. Coisa a ver.

Dá uma olhada no código que ligo a este post.

Grande abraço,
Gus

trev:
Escrevi um exemplo em C para o macOS, mas ele deve dar uma ideia (apenas ignore as informações específicas do macOS): Example C Static Library.

Gustavo 'Gus' Carreno:
Hey Trev,


--- Quote from: trev on April 10, 2021, 08:58:51 am ---Escrevi um exemplo em C para o macOS, mas ele deve dar uma ideia (apenas ignore as informações específicas do macOS): Example C Static Library.

--- End quote ---

Devo dizer, excelente exemplo!! Muito obrigado.

Mas, se não me engano, o @Afonso queria usar "shared" e não "static".

Tens algum exemplo de "shared"?

Grande abraço,
Gus

Navigation

[0] Message Index

[#] Next page

Go to full version