Pergunta

Estou escrevendo um programa que deve ser estendido por algumas definições de função. Uma das maneiras de compilar o programa é criar um único executável vinculando seu código ao código principal. O problema é: uma das funções a definir é opcional e eu preciso testar isso.

No Linux, aqui está o que estou fazendo:

Compile o programa com a opção "-rdynamic" para G ++ ou "--export-dinâmico" para LD. Em seguida, use LDSYM como este:

fct_type myfct = (fct_type)dlsym(RTLD_DEFAULT, "fct");

Se a função "FCT" existir no programa, isso retornará seu endereço; caso contrário, ele retornará nulo.

Agora, no Windows, eu deveria ser capaz de fazê -lo:

dll_handle = GetModuleHandle(0);
fct_type myfct = (fct_type)GetProcAddress(dll_handle, "fct");

Mas não há opção "-rdynamic" ou "--export-dinâmico" para G ++ no Mingw32! Então isso não funciona. Alguém sabe o que fazer no Windows com Mingw32?

Foi útil?

Solução

Ok, então, no final, vou responder minha própria pergunta ...

Você tem que se vincular com a bandeira -Wl,--export-all-symbols E funciona ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top