Galera é o seguinte, tenho um programa que compila no VS2008, ele é uma dll que é um plug-in para o firefox.
Gerando esse Dll pelo VS2008 funciona perfeitamente. O problema é que so funciona na minha maquina, por causa do .net framework. Existe alguma forma de fazer o VS2008 compilar uma dll sem que seja para utilizar com o .net framework?
Estou utilizando o Visual C++ 2008
Em paralelo estou tentando portar essa compilação para o Dev-C++, o projeto já esta compilando, porem a dll fica bem menor e o firefox não a reconhece. Existe algum truque para compilar Dll do Dev-C++?
Muito obrigado se alguem puder me dar qualquer luz.
Só precisa do .net Framework se você usar .net no código.
Se for código C++ puro, não precisa.
O código no devcpp tá compilando e não funciona?
Eu sugiro debugging. Teste as partes do código individualmente e verifique o que não está funcionando.
Caso o código não seja enorme, poste aqui.
E
entanglement
Esse não é o problema; não tem nada a ver com o .NET Framework. Na verdade, é uma opção de compilação que faz que ele requeira as bibliotecas de runtime do C++ (que ficam em \windows\winsxs*).
Veja se é possível alterar a opção de compilação, trocando de “Multithreaded DLL” para “Multithreaded”.
Cara funcionou como magica, a dll ficou 7 vezes maior e o meu plugin para o firefox funcionou perfeitamente agora vou fazer um para o IE e já sabendo disso não vou apanhar nesse ponto denovo !!
Muito Obrigado Mesmo !! Vc não sabe o quanto me ajudou !!
Abdon
pablosaraiva obrigado pela atenção, a dll gerada pelo Dev C++ ficava menor que a primeira dll gerada pelo visual studio, e não era possivel de realizar depuração pois quando eu iniciava o firefox a dll nem subia. Na verdade eu tenho um “esquema” de log na minha dll que da para depurar legal mas ele nem chega a iniciar.
E
entanglement
Ainda bem que sua DLL não depende do .NET Framework.
Se dependesse, você TERIA de usar a opção “Multithreaded DLL”, e aí você teria de instalar a versão nova do runtime do Visual C++ (que foi atualizada recentemente em agosto de 2009. Isso é uma imposição do .NET Framework (que depende de a DLL ter sido compilada com “Multithreaded DLL” ou “Multithreaded Debug DLL”. )
Provavelmente é por isso que não sobe nas outras máquinas. Para provar que é esse o caso, experimente rodar um Windows Update completo nessas máquinas que estavam com problemas, e tente rodar a DLL antiga (que era menor e usava a opção de compilação antiga). Se depois disso o plugin do Firefox subir, isso quer dizer que a atualização fez com que fosse instalada a versão nova do runtime do Visual C++.
ViniGodoy
Só um detalhe. Antes que você comece a sofrer com essa IDE, mantenha-se mesmo no Visual Studio 2008 (o express é free) ou, se fizer questão de compilar no MinGW, migre para o code::blocks: http://www.codeblocks.org/
O MinGW do dev é muito antigo e a IDE é cheia de bugs. Entre o mais enervante, está o fato dela omitir parte da mensagem de erro, o que pode tornar o seu trabalho de encontrar um problema um verdadeiro inferno.
E
entanglement
De modo geral, até para evitar problemas estranhos, é sempre melhor compilar plugins com a mesma versão de compilador que o produto foi compilado. Por exemplo, o Firefox para Windows é compilado normalmente com o MS Visual Studio, assim como o Java da Sun, então um plugin para o Firefox ou uma DLL JNI têm melhores probabilidades de funcionar corretamente se forem compilados com o MS Visual Studio.
( O Java da Sun para Solaris é compilado, obviamente, com o Sun Studio, mas ele é de graça ).
Abdon
@vini, muito obrigado pela dica, vou me livrar do dev C++
@entanglement, agora dei uma pesquisada e vi que o que vc escreveu, sobre a versão do compilador, esta na especificação da Gecko SDK (para plug-in do firefox), passou desapercebido por mim no começo.
Muito Obrigado pela atenção galera !!
Abdon
Aproveitando que já estamo aqui mesmo
Alguem de vcs sabem sobre alguma boa IDE para linux para programar em C++ ??
acredito que compilador não tem muito o que pensar, gcc na veia.
Tipo eu até sei compilar e linkar na mão com GCC mas acredito que assim como no windows, deve ser lincado algum .so ou .o do sistema operacional para a o meu arquivo .so do linux rodar corretamente.
B
bezier_curve
O Vini já lhe respondeu - é o Code::Blocks.
Abdon
Vc tem razão, não sei prq pensei que o code::blocks era apenas windows.
Muito Obrigado a todos, se alguem tiver curiosidade em ver como é um XDCOM Scritable Firefox Plugin estou anexando por carater de curiosidade, é so baixar a gecko sdk compilar e um abraço.