Incluindo arquivos em projeto
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?
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
Curtidas 0
Respostas
Rodc
03/06/2009
Nas opções do projeto você precisa incluir o caminho para os arquivos no ´Include Path´.
GOSTEI 0
Sergioaav
03/06/2009
Já inclui o diretório onde estão os arquivos e não deu certo também. O erro persiste.
GOSTEI 0
Rodc
03/06/2009
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´.
GOSTEI 0
Sergioaav
03/06/2009
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.
Esse arquivo .h contém uma nova classe, TNavier. Como eu adiciono essa nova classe ao projeto?Ppois ele só reconhece TForm.
GOSTEI 0
Rodc
03/06/2009
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!
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!
GOSTEI 0
Sergioaav
03/06/2009
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.
Meu builder é o 2009.
GOSTEI 0
Rodc
03/06/2009
No includes, tente troca o ´´ por <>
Se não funcionar esgotaram minhas sugestões... :(
#include <subEnSai.h> include <subrotinas.h>
Se não funcionar esgotaram minhas sugestões... :(
GOSTEI 0
Sergioaav
03/06/2009
Também não deu certo. Obrigado pela ajuda. Espero que mais alguém tente me ajudar.
GOSTEI 0
Sergioaav
03/06/2009
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:
Alguém sabe o que pode ser isso?
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?
GOSTEI 0
Rodc
03/06/2009
´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?
GOSTEI 0
Sergioaav
03/06/2009
Ele dá este aviso na linha q indiquei com uma flecha, xf[0] = 0.0; e depois dá novamente em yf[0] = 0.0;.
GOSTEI 0
Rodc
03/06/2009
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.
GOSTEI 0