Incluindo arquivos em projeto

03/06/2009

0

Pessoal, meu problema é o seguinte: Tenho um projeto feito em builder que tem um código que precisa de dois arquivos .cpp externos (pois nestes códigos estão as funções de cálculo que preciso) e estes dois .cpp externos precisam de um .h.
Tentei incluir os dois .cpp usando ´add to project´ e depois ´use unit´, mas na hora de compilar o builder dá o seguinte erro: [BCC32 Error] Unit1.cpp(20): E2209 Unable to open include file ´subEnSai.h´
Como faço para incluir os dois .cpp e o .h no projeto para que o código funcione?


Sergioaav

Sergioaav

Responder

Posts

04/06/2009

Rodc

Nas opções do projeto você precisa incluir o caminho para os arquivos no ´Include Path´.


Responder

04/06/2009

Sergioaav

Já inclui o diretório onde estão os arquivos e não deu certo também. O erro persiste.


Responder

04/06/2009

Rodc

Tenta incluir o .h no projeto também. Na tela de adicionar arquivo mude o tipo do arquivo para ´.h´, ao invés de ´.cpp´.


Responder

04/06/2009

Sergioaav

Adicionei o .h através de ´Add to project´ mas ele não aparece na lista ´Use unit´ então adicionei a linha #include ´bibsubrotinas.h´ manualmente. Mas ainda dá erro.
Esse arquivo .h contém uma nova classe, TNavier. Como eu adiciono essa nova classe ao projeto?Ppois ele só reconhece TForm.


Responder

04/06/2009

Rodc

O .h não aparece na lista ´Use Unit´ ele só aparece na lista de arquivos do projeto. Qual versão do CBuilder você está usando?
Você adicionou ao projeto o arquivo ´subEnSai.h´ ou ´bibsubrotinas.h´? O CBuilder não encontrou o primeiro, mas você está fazendo include do segundo!


Responder

04/06/2009

Sergioaav

Adicionei já os arquivos subEnSai.cpp e subrotinas.cpp já no projeto através de ´Add to project´ e ´Use unit´... eles aparecem no programa principal como #include ´subEnSai.h´ e include ´subrotinas.h´ e já adicionei tb o bibsubrotinas.h q aparece no programa principal como include ´bibsubrotinas.h´... esse bibsubrotinas.h é usado pelos dois cpps...
Meu builder é o 2009.


Responder

04/06/2009

Rodc

No includes, tente troca o ´´ por <>
#include <subEnSai.h>
include <subrotinas.h>

Se não funcionar esgotaram minhas sugestões... :(


Responder

04/06/2009

Sergioaav

Também não deu certo. Obrigado pela ajuda. Espero que mais alguém tente me ajudar.


Responder

04/06/2009

Sergioaav

Consegui resolver o problema. Converti os dois arquivos .cpp pra .h e adicionei todos ao programa principal. Agora está rodando. Só que agora apareceu um novo erro que não tenho idéia do que seja. O erro é: [BCC32 Warning] subrotinas.h(176): W8066 Unreachable code
Esta linha de erro leva ao seguinte código apontado da função abaixo:
void TNavier::PropGeom(void)
{
 double Xm,Ym,Zm,rel,a1;
 double dX,dY,dZ;
 register int i,j,k;

 rel = 1.05;
 switch(maX)  {// COORDENADA X
xf[0] = 0.0; <<<<<<<--------------------------------
xc[0] = 0.0;
case 0:
dX = X/M;
for(i=1; i<=M; i++)  {
xf[i] = xf[i-1] + dX;
xc[i] = (xf[i]+xf[i-1])/ 2.0;
}
break;
case 1:
Xm = X/2;
a1 =  Xm*(1.0- rel) /(1.0-pow(rel,M/2));
for(i=1;i<=(M/2);i++)  {
dX = a1*pow(rel,i-1);
xf[i] = xf[i-1] + dX;
xc[i] = (xf[i]+xf[i-1])/ 2.0;
}
for(i=(M/2)+1; i<=M; i++)  {
dX = a1*pow(rel,M-i);
xf[i] = xf[i-1] + dX;
xc[i] = (xf[i]+xf[i-1])/ 2.0;
}
break;
 }
 xf[M+1] = xf[M];
 xc[M+1] = xf[M];
 switch(maY)  {// COORDENADA Y
yf[0] = 0.0;
yc[0] = 0.0;
case 0: // malla uniforme
dY = Y/N;
for(j=1; j<=N; j++)  {
yf[j] = yf[j-1] + dY;
yc[j] = (yf[j]+yf[j-1])/ 2.0;
}
break;
case 1:
Ym = Y/2;
a1 =  Ym*(1.0- rel) /(1.0-pow(rel,N/2));
for(j=1;j<=(N/2);j++)  {
dY = a1*pow(rel,j-1);
yf[j] = yf[j-1] + dY;
yc[j] = (yf[j]+yf[j-1])/ 2.0;
}
for(j=(N/2)+1; j<=N; j++)  {
dY = a1*pow(rel,N-j);
yf[j] = yf[j-1] + dY;
yc[j] = (yf[j]+yf[j-1])/ 2.0;
}
break;
 }
 yf[N+1] = yf[N];
 yc[N+1] = yf[N];
 switch(maZ)  {// COORDENADA Z
case 0: // malla uniforme
dZ = Z/L;
switch(ccz)  {
case 0: // parede
Lim = L-1;
zf[0] = 0.0;
zc[0] = 0.0;
for(k=1; k<=L; k++)  {
zf[k] = zf[k-1] + dZ;
zc[k] = (zf[k]+zf[k-1])/ 2.0;
}
zf[L+1] = zf[L];
zc[L+1] = zf[L];
break;
case 1: // derivada nula
Lim = L;
zf[0] = 0.0;
zc[0] = -dZ/ 2.0;
for(k=1; k<=L+1; k++)  {
zf[k] = zf[k-1] + dZ;
zc[k] = (zf[k]+zf[k-1])/ 2.0;
}
break;
case 2: // periodicidad
Lim = L;
zf[0] = 0.0;
zc[0] = -dZ/ 2.0;
for(k=1; k<=L+1; k++)  {
zf[k] = zf[k-1] + dZ;
zc[k] = (zf[k]+zf[k-1])/ 2.0;
}
break;
}
break;
case 1: // malla no uniforme
Lim = L-1;
zf[0] = 0.0;
zc[0] = 0.0;
Zm = Z/2;
a1 =  Zm*(1.0- rel)/ (1.0-pow(rel,L/2));
for(k=1;k<=(L/2);k++)  {
dZ = a1*pow(rel,k-1);
zf[k] = zf[k-1] + dZ;
zc[k] = (zf[k]+zf[k-1])/ 2.0;
}
for(k=(L/2)+1; k<=L; k++)  {
dZ = a1*pow(rel,L-k);
zf[k] = zf[k-1] + dZ;
zc[k] = (zf[k]+zf[k-1])/ 2.0;
}
zf[L+1] = zf[L];
zc[L+1] = zf[L];
break;
 }
}


Alguém sabe o que pode ser isso?


Responder

04/06/2009

Rodc

´Unreachable code´ é um aviso que tem algum código que não será executado devido a um ´break´ ou ´return´ errado. Em que linha do seu código ele marca este erro?


Responder

04/06/2009

Sergioaav

Ele dá este aviso na linha q indiquei com uma flecha, xf[0] = 0.0; e depois dá novamente em yf[0] = 0.0;.


Responder

04/06/2009

Rodc

Todo código de um Switch deve estar dentro de um Case. Você colocou o código antes do case 0. Este código não será executa e é isto que o compilador está te alertando.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar