Forum > Portuguese
como usar uma dll escrito em c
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