Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Witam wszystkich :) Mam taki problem. Zacząłem sobie coś bazgrać w C++, ale napotkałem taki błąd: 1>------ Build started: Project: 10TEAM, Configuration: Debug Win32 ------ 1> Stdafx.cpp 1> 10TEAM.cpp 1>c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(96): error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(53) : System::IServiceProvider IServiceProvider' 1> or 'c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : System::IServiceProvider' 1>c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(96): error C3699: '*' : cannot use this indirection on type 'IServiceProvider' 1> compiler replacing '*' with '^' to continue parsing 1>c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(103): error C2371: 'IServiceProvider' : redefinition; different basic types 1> c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(53) : see declaration of 'IServiceProvider' 1>c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(120): error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(103) : IServiceProvider' 1> or 'c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : System::IServiceProvider' 1>c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(241): error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(103) : IServiceProvider' 1> or 'c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : System::IServiceProvider' 1>c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(251): error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(103) : IServiceProvider' 1> or 'c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : System::IServiceProvider' 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(6459): error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(103) : IServiceProvider' 1> or 'c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : System::IServiceProvider' 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(6461): error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\program files\microsoft sdks\windows\v7.0a\include\servprov.h(103) : IServiceProvider' 1> or 'c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : System::IServiceProvider' 1> AssemblyInfo.cpp 1> Generating Code... ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Nie jest on spowodowany kodem, wyeliminowałem wszystkie błędy w kodzie. Czym jest to spowodowane i jak można to naprawić? Czy z takim błędem biblioteka będzie działała poprawnie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Czy z takim błędem biblioteka będzie działała poprawnie? zacznijmy od tego że jej w ogóle nie będzie, bo się z takim błędem nie skompiluje. Czym jest to spowodowane i jak można to naprawić? pokaż kod który dotyczy tych linijek. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 No teraz się zorientowałem że jej nie będzie :P A co do tego kodu, to co mam wrzucić? Bo to nie jest błąd w funkcji, którą napisałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 wiec pokaz ta funkcje. btw. jestes pewny ze nie duplikujesz includowania plikow naglowkowych? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Właściwie to nie wiem, bo nie wiem czy kompiluje się tylko ten plik, który aktualnie edytuję (czyli 10TEAM.cpp) czy wszystkie. Jeżeli tylko ten jeden, to tak, bo w nim jest wrzucone #include "stdafx.h" i nigdzie indziej nie ma. Natomiast w pliku Stdafx.cpp jest też includowany ten nagłówek. Więc nie wiem, zmieszałem się już. EDIT: Teraz zbesztacie pewnie to co napisałem :P : #include "stdafx.h" #include <windows.h> #define export extern "C" __declspec(dllexport) export double Message(char* caption, char* text, double icon, double buttons) { /* Icon of message */ int icon_no = int(icon); // Changing type of variable to INT. GM operate double, now it's converted to INT. UINT icon_name; // Value of this variable is a name of icon. switch (icon_no) { case 1: icon_name = MB_ICONEXCLAMATION; break; // If icon_no is equal 1, then icon is "EXCLAMATION" case 2: icon_name = MB_ICONINFORMATION; break; // If icon_no is equal 2, then icon is "INFORMATION" case 3: icon_name = MB_ICONQUESTION; break; // If icon_no is equal 3, then icon is "QUESTION" case 4: icon_name = MB_ICONSTOP; break; // If icon_no is equal 4, then icon is "STOP" default: icon_name = MB_ICONINFORMATION; // Default icon name is "INFORMATION" } /* --------------- */ /* Buttons of message */ int buttons_no = int(buttons); // Changing type of variable to INT. GM operate double, now it's converted to INT. UINT buttons_name; // Value of this variable is a name of buttons. switch (buttons_no) { case 1: buttons_name = MB_ABORTRETRYIGNORE; break; // If buttons_no is equal 1, then buttons are "Abort, Retry, Ignore" case 2: buttons_name = MB_CANCELTRYCONTINUE; break; // If buttons_no is equal 2, then buttons are "Cancel, Try again, Continue" case 3: buttons_name = MB_OK; break; // If buttons_no is equal 4, then button is "Ok" case 4: buttons_name = MB_OKCANCEL; break; // If buttons_no is equal 5, then buttons are "Ok, Cancel" case 5: buttons_name = MB_RETRYCANCEL; break; // If buttons_no is equal 6, then buttons are "Retry, Cancel" case 6: buttons_name = MB_YESNO; break; // If buttons_no is equal 7, then buttons are "Yes, No" case 7: buttons_name = MB_YESNOCANCEL; break; // If buttons_no is equal 8, then buttons are "Yes, No, Cancel default: buttons_name = MB_OK; } /* ------------------- */ /* Show message */ int msg = MessageBox(0, text, caption, icon_name | buttons_name); // Show message switch (msg) { case 1: return 1; break; // OK case 2: return 2; break; // CANCEL case 3: return 3; break; // ABORT case 4: return 4; break; // RETRY case 5: return 5; break; // IGNORE case 6: return 6; break; // YES case 7: return 7; break; // NO case 10: return 8; break; // TRY AGAIN case 11: return 9; break; // COUNTINUE default: return 0; } /* ----------- */ } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 pokaz calosc, bo tak to w ciemno do zalanej smierci nie zgadniemy :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Zmieniłem pierwsze linijki na: #include "10TEAM.h" #include "Stdafx.h" #include <windows.h> #define export extern "C" __declspec(dllexport) I teraz jest taki błąd: 1>------ Build started: Project: 10TEAM, Configuration: Debug Win32 ------ 1> 10TEAM.cpp 1>10TEAM.cpp(1): warning C4627: '#include "10TEAM.h"': skipped when looking for precompiled header use 1> Add directive to 'StdAfx.h' or rebuild precompiled header 1> Creating library c:\users\jabol_dread\documents\visual studio 2010\Projects\10TEAM\Debug\10TEAM.lib and object c:\users\jabol_dread\documents\visual studio 2010\Projects\10TEAM\Debug\10TEAM.exp 1>10TEAM.obj : error LNK2028: unresolved token (0A000027) "extern "C" int __stdcall MessageBoxA(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBoxA@@$$J216YGHPAUHWND__@@PBD1I@Z) referenced in function "extern "C" int __cdecl MessageBox(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PBD1I@Z) 1>10TEAM.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall MessageBoxA(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBoxA@@$$J216YGHPAUHWND__@@PBD1I@Z) referenced in function "extern "C" int __cdecl MessageBox(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PBD1I@Z) 1>c:\users\jabol_dread\documents\visual studio 2010\Projects\10TEAM\Debug\10TEAM.dll : fatal error LNK1120: 2 unresolved externals ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 "10TEAM.h" korzysta z "windows.h", a więc on musi być pierwszy. poza tym ja bym wywalił stdafx w ogóle, na cholibke on w ogóle Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Jak wywalę stdafx (to jest precompiled header) i wyłącze używanie go, to jest ten sam błąd (tj. 2 posty wyżej). I kiedy zostawię samo <windows.h> to też tak samo. Jak używam tamtych includów i wszystko normalnie ustawione, jest ten error co w 1 poście. Jak wywalę stdafx to tak samo - jak w 1 poście. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 ja CI mowie to co widze po tym co pokazales (a pokazales w sumie nic). 10team.h uzywa rzeczy z windows.h, dla tego windows.h musi byc przed 10team.h Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 // 10TEAM.h #pragma once using namespace System; namespace My10TEAM { public ref class Class1 { // TODO: Add your methods for this class here. }; } Czego on tu używa ? Dałem go na początek (przed windows.h) i tak samo jak 4 posty wyżej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 to nie wiem czego on wyrzuca bledy z MessageBox (ktory jest w windows.h) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 No też tego nie wiem :/ A w funkcji wszystko dobrze napisane jest ? (Patrząc nie na optymalność, tylko na poprawność kodu) Edit: Tzn? Nie jestem w tym obeznany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 dobra, po kolei: pokaz mi schemat na ktorym widac gdzie includujesz windows.h a gdzie uzywasz MessageBox Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 wtf? public ref class Class1 ? Lol <.< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 To jest ten plik 10TEAM.cpp: 10TEAM.cpp Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Wypierdziel "public ref" (C#), oraz po co Ci "using namespace System;"?! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Ja nie wiem w ogóle po co ten plik jest. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 zobaczyłęś przykład użycia C#, skopiowałeś bez zastanowienia, więc nie dziw że takie cuda się dzieją. Wywal jak Ci nie potrzebny. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Czerwca 2010 Udostępnij Opublikowano 25 Czerwca 2010 Nie, nie kopiowałem nic. Stworzyłem projekt w Visual C++ 2010 Express Edition i to już było -_- Wywaliłem cały ten plik. Tu jest błąd linkera (czy jakoś tak). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 26 Czerwca 2010 Udostępnij Opublikowano 26 Czerwca 2010 Sorry za doubleposta, ale jest ktoś w stanie pomóc? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Czerwca 2010 Udostępnij Opublikowano 26 Czerwca 2010 tak, zapodaj projekt na PW Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 26 Czerwca 2010 Udostępnij Opublikowano 26 Czerwca 2010 I da się coś z tym zrobić ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Czerwca 2010 Udostępnij Opublikowano 26 Czerwca 2010 jasne, wysylam projekt, u mnie sie skompilowalo :) EDIT: Wysłane :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 26 Czerwca 2010 Udostępnij Opublikowano 26 Czerwca 2010 Dzięki wielkie :) Temat zamykam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi