Biblioteca linux equivalente a windows.h...

Iniciado por eunix, 03 de Julho de 2013, 06:33

tópico anterior - próximo tópico

eunix

Oi pessoal,
sou novo no fórum...

Antes de mais nada peço perdão pelo absurdo no título, mas acontece o seguinte:

por força das circunstâncias, vou aprender a famo$a 'linguagem' windows.h. Máquinas virtuais são pesadas, o wine parece impróprio para comportar uma IDE e sinto no horizonte um fantasma: dual_boot!
Preciso criar os sistemas do modo mais próprio para windows o possível, para depois explorar possibilidades alternativas.
Alguém pode me dar uma solução, tipo "seus problemas acabaram!!!"?
Cara, duvido que eu seja o primeiro a passar por isso...

Tá valendo

Solid One

Antes de mencionar a máxima à lá Polishop "Seus problemas acabaram", temos que entender de fato o seu problema. O que você quer fazer, exatamente?

eunix

Amigo,

se estou usando o fórum é porque uso Ubuntu.
Iniciei o post dizendo que vou aprender a usar biblitoeca "windows.h".
Existe algum modo de mim usar essa biblioteca no eclipse juno executado no quantal?

Existe algum MinGW ao contrário que compile windows em linux?
Não vale falar de máquina virtual e wine...

Agradecido

Solid One

Então você está tentando desenvolver aplicativos em C++ no Ubuntu, ou mesmo portar para Linux aplicativos em C++ que originalmente só funcionam em Windows?

Pois bem, uma das vantagens de se usar Linux para programadores é que quase toda instalação do Linux já possui aplicativos básicos necessários para programar em C++ e compilar seus aplicativos. Peguemos por exemplo o MinGW, que é um compilador C++ para Windows: Para você usar o MinGW no seu computador, você terá que instalá-lo manualmente, ou por si só, ou junto com algum outro programa (o Dev-C++, por exemplo, quando você instala no computador, já vem com um compilador C++ incluso. Só não sei ao certo qual o nome).

Já no Linux, geralmente já vem instalado o compilador "gcc" (compilador livre para C) e "g++" (compilador livre para C++). Digamos que você possua o seguinte arquivo em C, de nome "teste.c":


#include <stdio.h>
main(){
   printf("Hello World");
}


Para compilá-lo no Linux e gerar um binário, basta o comando:

gcc teste.c -o teste.bin

Isso vai gerar um arquivo executável compilado a partir do seu código. O arquivo terá nome "teste.bin", que quando executado assim:

./teste.bin

Retornará na tela a mensagem "Hello World".

Caso sua instalação não venha com o gcc ou o g++, você pode instalá-lo no seu computador a partir do comando:

sudo apt-get install build-essential

E é isso. Desse modo, caso você tenha o código-fonte de um programa em C++, você pode tentar compilá-lo no Linux desta forma. Sei que não respondeu a pergunta a respeito da biblioteca "windows.h", mas antes disso tenho mais uma dúvida: No seu caso, sobre o seu programa "Windows" que você quer compilar no Linux, você tem o seu código-fonte em C++?

eunix

olá amigo solid one...

ainda não criei o código. Minha intenção é escrever códigos em C ou C++ usando a biblioteca "windows.h".

Isso seria feito mais do que facilmente se eu fosse usuário de um sistema windows. Apenas configuraria a IDE, incluiria a biblioteca e mandaria brasa.

Entretanto, eu uso eclipse kepler rodando em ubuntu quantal quetzal (raring dá mais bug do que quantal), e não estou disposto a configurar um dual_boot, muito menos substituir meu ubuntu querido por um sistema de que não gosto nem um pouco, e muito menos da nova versão. Quero fugir a todo custo de máquinas virtuais que tendam a usar mais memória o possível, ou um wine dando bug a cada 10 minutos.

Gostaria de configurar includes no plugin pkg-config, baixado no menu help/eclipse marketPlace, e escrever #include <windows.h> na cabeça do código e mandar brasa, mas acho que faltam algumas dll's, né não? E eu tô sem tempo pra estudar gambiarras...

Há um meio padronizado, usado por muitos, que eu possa usar também para resolver isso???

De qualquer maneira, tá valendo...

irtigor

Nesse caso, não use essa biblioteca, use outras - multiplataformas - que desempenhem a mesma função. Pra algo realmente especifico, só se você fornecer um exemplo do que pretende (não é como se a windows.h só tivesse um uso). De qualquer forma, olhe o wxWidgets, QT e GTK.

Outra coisa, se o programa deve ser usado no Windows, pelo menos na fase testes você vai ter que rodar esse sistema.

Solid One

#6
Cara, dei uma pesquisada sobre a biblioteca "windows.h" e seus possíveis usos no Linux, e encontrei alguns resultados que podem lhe ajudar.

Primeiro, essa página de wikipedia: http://en.wikipedia.org/wiki/Windows.h

Segundo o link, a biblioteca contém várias declarações para uso de todas as funções da API do Windows, juntamente com macros comumente utilizadas entre programadores, e todos os tipos de dados usados pelas várias funções e subsistemas. A "windows.h" contém, inclusive, bibliotecas básicas para se criar programas com interface gráfica no Linux, que nesse caso é a WinGDI.

Em seguida, essa pergunta no Stackoverflow: http://stackoverflow.com/questions/7317523/what-should-i-use-instead-of-windows-h-in-linux

Aqui, um usuário pergunta "O que eu deveria utilizar ao invés de windows.h no Linux?", e inúmeros usuários dão respostas bastante esclarecedoras: Primeiro, retire a windows.h do código porque não dará muito certo. Segundo, para interface gráfica, a WinGDI não funcionará no Linux logo de cara, portanto é melhor portar a interface gráfica para QT, wxWidgets ou GTK. Terceiro, nem todos os tipos de variáveis da "windows.h" estão disponíveis no Linux, portanto você terá que reescrever parte da estrutura do código.

Ainda bem que, no seu caso, você não tem um código pronto que funciona no Windows. Dependendo da ocasião, portar um aplicativo Windows para Linux não é uma tarefa tão fácil assim, pois não existe simplesmente uma função "convertWindowsParaLinux()" para facilitar todo o processo. Quão mais integrado o aplicativo tiver com bibliotecas fechadas do Windows, mais difícil será portá-lo para outras arquiteturas/plataformas.