2013-07-24 4 views
0

РЕДАКТИРОВАТЬ: Итак, совет ваших ребят, и теперь моя программа компилируется. Но теперь я не могу заставить его работать, потому что я получаю эти ошибки.Ошибка загрузки проекта после отладки

'baseconverter.exe': Loaded 'C:\Users\OwnerT\Documents\Visual Studio 2010 
\Projects\baseconverter\Debug\baseconverter.exe', Symbols loaded. 
'baseconverter.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file 
'baseconverter.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file 
'baseconverter.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file 
'baseconverter.exe': Loaded 'C:\Windows\System32\msvcp100d.dll', Symbols loaded. 
'baseconverter.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Symbols loaded. 
The program '[5320] baseconverter.exe: Native' has exited with code 0 (0x0). 

Вот новый обновленный код. Я исправил std :: cout и устранил пространства имен, но я думаю, что перегрузил кодировку.

converter.h

#ifndef CONVERTER_H 
#define CONVERTER_H 
using std::cout; 
using std::cin; 
using std::endl; 
//This contains the function types needed for 
//reading an input 
//converting from any base to base10 
//convert from base10 to any base 
extern int non10num; 
extern int bIn; 
extern int bOut; 
extern int b10num; 
extern int Conv; 
extern int option; 
extern int sum; 
extern int num; 

#endif 

convertion.cpp

#include <iostream> 
#include <cmath> 
#include <string> 
#include <cctype> 
#include "converter.h" 

using std::cout; 
using std::cin; 
using std::endl; 

int non10num = 0; 
int bIn  = 0; 
int bOut  = 0; 
int b10num = 0; 
int Conv  = 0; 
int option = 0; 
int sum  = 0; 
int num  = 0; 
int main() 
{ 

//Reinstates the int variables 

int pow = 1; 
while (option) 
{ 
sum += b10num * pow; 
num /= 10; 
pow *= non10num; 
} 
} 

converter.cpp

#include <iostream> 
#include <cmath> 
#include <string> 
#include <cctype> 
#include "converter.h" 

using std::cout; 
using std::cin; 
using std::endl; 

extern int non10num; 
extern int bIn; 
extern int bOut; 
extern int b10num; 
extern int Conv; 
extern int option; 
extern int sum; 
extern int num; 


//This brings us to the menu 
void menu() 
{ 
cout << "1. Base to Base" << endl; 
cout << "2. Base to Base-10" << endl; 
cout << "3. Base-10 to Base" << endl; 
cout << "4. Exit" << endl; 
cout << "" << endl; 
cout << "Choose your option: "; 
     cin >> option; 
     switch (option) 
     { 
     case 1: cout << "Enter your integer: "; //Asks for user input 
        cin >> non10num; 
       cout << "Enter which base it belongs to: "; 
        cin >> bIn; 
       cout << "Enter the base it should be converter: "; 
        cin >> bOut; 

       cout << non10num << " in base " << bIn << " is " << non10num%bIn << " in base " << bOut<< endl; //Converts the data 
       break; 

     case 2: cout << "Enter your integer: "; 
        cin >> non10num; 
       cout << "Enter which base it belongs to: "; 
        cin >> bIn; 
       cout << non10num << " in base " << bIn << " is " << non10num%10 << " in " << b10num; 
       break; 

     case 3: cout << "Enter your integer: "; 
        cin >> b10num; 
       cout << "Enter which base the integer will be converted: "; cin >> Conv; 

       cout << b10num << " in base 10 is " << b10num%10 << " in "<< Conv; 
       break; 

     case 4: //Exits the menu 
      return ; 
      break; 
      default: 
      cout << "You have entered an invalid option!" << endl; 
     } 

while (option!=0); 
return ; 
} 
+0

Ваши новые сообщения об ошибках являются проблемой с вашим компилятором/IDE, а не с кодом. Я не использовал Visual Studio с 90-х годов, поэтому не могу помочь, но убедитесь, что вы сделали правильный проект при запуске (например, «консольное приложение» или что-то в этом роде, а не «Win32» или «MFC» или что бы то ни было в наши дни.) Хотя последняя строка 'The program '[5320] baseconverter.exe: Native' вышла с кодом 0 (0x0)', похоже, указывает на то, что ваша программа выполнена и вышла нормально. –

+0

Кстати, если ваш оригинальный вопрос был удовлетворен вашим удовлетворением, не стесняйтесь нажимать галочку рядом с лучшим ответом, чтобы принять его. –

+0

Да, я думаю, что ваша программа работает нормально. 'main()' просто устанавливает 'pow' в' 1', никогда не зацикливается, потому что 'option' установлен в' 0', а затем завершается. Кажется, вы никогда не называли вашу функцию 'menu()' или что-то в этом роде. –

ответ

1

Определение каждый из них, как это в одной ваших CPP файлов:

int bIn = 0;

, а затем объявить это так во всех ваших других:

extern int bIn;

Как и в настоящее время, вы нарушаете One Definitio n Правило.

Кроме того, прямо сейчас вы объявляете переменные с одинаковыми именами в main(), которые будут скрывать все ваши глобальные переменные в этой функции, что, вероятно, не то, что вы хотите.

+0

Это не нарушение ODR, потому что все они имеют одинаковую точную декларацию (идентичный порядок токенов, включая все типы, от которых зависит декларация). ODR не имеет дело с количеством определений, оно имеет дело с единообразием. –

+0

Спасибо, это очень помогло. Моя программа компилируется сейчас, но она завершается всякий раз, когда я отправляюсь на отладку. – hello

+0

@BenVoigt: Я рад, что исправлен, но как определить и инициализировать один и тот же внешний идентификатор в двух разных единицах перевода, а не в нарушении? –

0

Не #include "convertion.cpp" в любом файле. Включив его, вы заменяете эту строку include содержимым файла, так что вы дважды объявили non10num в одной и той же программе: один раз в "converter.cpp" (из-за строки include) и один раз в "convertion.cpp" , Надеюсь, это поможет.

+0

Это решило мою «уже определенную» проблему, но теперь она говорит, что все мои «cout», «cin» и «endl» являются незаявленными идентификаторами. – hello

+0

Не используйте 'using namespace std;' в любом случае. Либо квалифицируйте их всех (например, 'std :: cout'), либо поместите такие вещи, как' using std :: cout; используя std :: cin; используя std :: endl; 'в верхней части * каждого * cpp-файла, в котором вы их используете. –

Смежные вопросы