Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kompilacją
Konnekt | Forum > Developerzy > Tworzenie wtyczek
dulek000
Kompilowałem template.cpp według porad KoSiarz'a z tego tematu.

CODE
Compiling...
plug_defs.cpp
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug.h(337) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug.h(1090) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug.h(1096) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug_func.h(212) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(96) : warning C4312: 'type cast' : conversion from 'int' to 'cCtrl *' of greater size
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(264) : warning C4311: 'type cast' : pointer truncation from 'char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(340) : warning C4101: 'ec' : unreferenced local variable
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(376) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(385) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(390) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo_cfg *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(395) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo_cfg *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(410) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(420) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(427) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(434) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(438) : warning C4311: 'type cast' : pointer truncation from 'sUIActionNotify_base *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(443) : warning C4312: 'type cast' : conversion from 'unsigned int' to 'void *' of greater size
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(456) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(468) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(478) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(478) : warning C4312: 'type cast' : conversion from 'int' to 'char *' of greater size
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(483) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(486) : warning C4311: 'type cast' : pointer truncation from 'sUIActionInfo *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(489) : warning C4311: 'type cast' : pointer truncation from 'sUIAction *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(489) : warning C4312: 'type cast' : conversion from 'int' to 'HANDLE' of greater size
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(517) : warning C4312: 'type cast' : conversion from 'int' to 'char *' of greater size
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(520) : warning C4311: 'type cast' : pointer truncation from 'char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(541) : warning C4312: 'type cast' : conversion from 'int' to 'char *' of greater size
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(544) : warning C4311: 'type cast' : pointer truncation from 'char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(573) : warning C4311: 'type cast' : pointer truncation from 'sUIIconRegister *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(583) : warning C4311: 'type cast' : pointer truncation from 'sUIIconRegister *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(592) : warning C4311: 'type cast' : pointer truncation from 'sUIIconRegister *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(603) : warning C4311: 'type cast' : pointer truncation from 'sUIIconRegisterList *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(612) : warning C4311: 'type cast' : pointer truncation from 'sUIIconRegisterList *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(745) : warning C4311: 'type cast' : pointer truncation from 'sUIAction *__w64 ' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\plug_defs.cpp(753) : warning C4311: 'type cast' : pointer truncation from 'sUIAction *__w64 ' to 'int'
test2.cpp
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug.h(337) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug.h(1090) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug.h(1096) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
d:\Program Files\Konnekt\SDK\headers\c++\konnekt\plug_func.h(212) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(61) : warning C4060: switch statement contains no 'case' or 'default' labels
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(76) : warning C4060: switch statement contains no 'case' or 'default' labels
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(93) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(95) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(96) : warning C4311: 'type cast' : pointer truncation from 'const char *' to 'int'
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(107) : warning C4312: 'type cast' : conversion from 'int' to 'sUIActionNotify_base *' of greater size


Olać te warningi, czy może zmienić coś we właściwościach projektu?
winthux
Olać smile.gif

const char* jest właściwie intem ale reprezentuje 1 bajtowe segmenty pamięci, int natomiast jest 4 bajtowy, ale wskaźniki reprezentuje się za pomocą 4 bajtowych intów więc to na jedno wychodzi... możesz to olać lub zrobić #pragma warning(disable,
4311-2)
Olórin
Różnica jest przy maszynach 64bitowych - tam wskaźnik będzie miał o ile sie nie myle 8 bajtów (64 bity) ;-)
dulek000
CODE
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(61) : warning C4060: switch statement contains no 'case' or 'default' labels
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(76) : warning C4060: switch statement contains no 'case' or 'default' labels
c:\documents and settings\michał\moje dokumenty\visual studio projects\test2\test2.cpp(107) : warning C4312: 'type cast' : conversion from 'int' to 'sUIActionNotify_base *' of greater size


A te? Też tak mało ważne? :>
skolima
A to nie Twoje błędy przypadkiem? tongue.gif Może lepiej nie dodawaj tej pragmy...
dulek000
Raczej nie moje błędy, bo to czysty plik template.cpp tongue.gif
winthux
dwa pierwsze błędy to switch bez żadnego case i defaulta, ostatni to przy rzutowaniu wskaźników coś podobnego jak z tym wcześniej...

Olorin: 8bajtów ale do tego trzeba specjalnie skompilować tongue.gif
hao
Wlasciwosci projektu / General / Detect 64-bit portability issues
dulek000
Tak, to pomogło. Teraz mam jeszcze coś takiego:
CODE
plug_defs.cpp(340) : warning C4101: 'ec' : unreferenced local variable
skolima
no jest.. ja ją z kodu wywaliłem tongue.gif
KoSiarzPL
Jak ci przeszkadzaja worningi mozesz w srodowisku zmenjszyc poziom ostrzezen. Standartowo poziom wynosi 3 ale nie razdze obnizac lepiej podwyzszyc do 4 smile.gif
dulek000
Nie przeszkadzają, ale nie wiedziałem, czy przypadkiem czegoś nie ustawiłem źle tongue.gif
ar2oor
warning C4060: switch statement contains no 'case' or 'default' labels
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
warning C4060: switch statement contains no 'case' or 'default' labels

mi takie wywala, co jest nie tak :> ?


KoSiarzPL
1. Ty rozumieć angielski? Jeśli nie to do słownika
2. MSDN ma Helpa z opisem i przykladem kazdego błędu
3. Błąd się przeważnie tyczy jakiejś linijki kodu. Ty uprzejmy je podać?
4. Ty się nauczyć czytać posty przyklejone w tym forum a w szczególnści Twoja pierwsza kompilacja ?
5. Poradniki

edit:
Czlowieku ja sobie zartowac, dobry humor mam wlasnie. Podalem ci wszystko czego potrzebujesz.
ar2oor
dobra jesli to taki problem, to nie wazne :|
winthux
podejrzewam, że kompilujesz pod vs2k5. Dodaj int jako typ zwracany do każdej funkcji w pliku.... W przykładzie nie we wszystkich funkcjach jest...
ar2oor
racja ,tak tez bylo w jednej funkcji nie bylo int .
ale teraz pojawyly mi sie 4 nowe błędy


Creating library ..\Debug\ads.lib and object ..\Debug\ads.exp
ads.obj : error LNK2001: unresolved external symbol "class cCtrl * Ctrl" (?Ctrl@@3PAVcCtrl@@A)
ads.obj : error LNK2019: unresolved external symbol "void __cdecl Plug_Deinit(int,int)" (?Plug_Deinit@@YAXHH@Z) referenced in function _IMessageProc@4
ads.obj : error LNK2019: unresolved external symbol "int __cdecl Plug_Init(int,int)" (?Plug_Init@@YAHHH@Z) referenced in function _IMessageProc@4
..\Debug\ads.dll : fatal error LNK1120: 3 unresolved externals


wiesz moze co jeszcze moze bys nie tak ?

// Cytat wyciąłem - prosimy nie cytować całego ostatniego posta w temacie.
winthux
dołącz plik plug_defs.cpp do projektu....
ar2oor
ok dzieki ,zostaly jeszcze dwa błędy (dot. tych switchy) i 7 ostrzeżeń,

jak juz uzupełnie jakos te switch'e to pewnie bedzie działać.

dzieki
Olórin
Nie musisz ich wypełniać to jedynie ostrzeżenia wink.gif ewentualnie /* zakomentuj je*/
ar2oor
i jeszcze cos wyskoczylo :



QUOTE

..\plug_defs.cpp(255) : warning C4996: '_vsnprintf' was declared deprecated
..\include\stdio.h(339) : see declaration of '_vsnprintf'
Message: 'This function or variable may be unsafe. Consider using _vsnprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
..\plug_defs.cpp(340) : warning C4101: 'ec' : unreferenced local variable
..\plug_defs.cpp(504) : warning C4996: 'itoa' was declared deprecated
..\include\stdlib.h(820) : see declaration of 'itoa'
Message: 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa. See online help for details.'
..\plug_defs.cpp(622) : warning C4996: 'strcpy' was declared deprecated
..\include\string.h(73) : see declaration of 'strcpy'
Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
..\plug_defs.cpp(624) : warning C4996: 'strcpy' was declared deprecated
..\include\string.h(73) : see declaration of 'strcpy'
Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
..\plug_defs.cpp(626) : error C2440: 'initializing' : cannot convert from 'const char *' to 'char *'
Conversion loses qualifiers
..\plug_defs.cpp(651) : error C2440: 'initializing' : cannot convert from 'const char *' to 'char *'
Conversion loses qualifiers



KoSiarzPL
Przedtem było mi wesoło ale teraz to po prostu "no comment". Po co człowiek pisze post jak skompilować przykład, po to żeby wisiał a ludzie po raz n-ty opiszą w nowym temacie jak to zrobic?
ar2oor
a moze zamiast sie wymądrzać napisał byś mi o co chodzi :> ?
Olórin
http://www.konnekt.info/forum/index.php?showtopic=6016 To przedewszystkim.
piech
może jednak zamiast się irytować i podawać linki do stron, które odwiedziłem kila razy, ktoś napisze jak pozbyć się błędu:

headers\plug_defs.cpp(627) : error C2440: 'initializing' : cannot convert from 'const char *' to 'char *'
Conversion loses qualifiers

bo jakoś na stronach do których odsyłacie nie widzę rozwiązania
hao
Jakiego używasz kompilatora?
dulek000
Podejrzewam, że to VC2005 - miałem podobny problem.
piech
Kompiluje pod VC 2005 Express edition

Po podmiance pliku plug_defs.cpp na ten ze strony http://www.konnekt.info/forum/index.php?showtopic=6016 wszystko chdzi.

Mój bład. Tylko czemu sdk, zewiera plik, który wywala errory pod VC 2005?
Olórin
SDK był tworzony (i jest nadal) pod MSVC++ 7.1 (2003). Poprostu nowy kompilator jest bardziej strictowy...
KoSiarzPL
Ja tego błędu pozbyłem się zamieniając:
CODE
char * start = strstr(ext , find);

na
CODE
char * start = const_cast<char *> strstr(ext , find);
piech
troszke odbiegam juz do tematu kompilacji, ale nadal jest jakaś ciągłość z poprzednimi wątkam więc

QUOTE

SDK był tworzony (i jest nadal) pod MSVC++ 7.1 (2003). Poprostu nowy kompilator jest bardziej strictowy...


ok, ale mamy, macie, plik, który da sie skompilowac pod VC 2005
bedzie sie tez go dalo skompilowac pod VC 7.1
czemu wiec nie zastapic plug_defs.cpp w SDK tym innym, kompatybilnym.
Nie trzeba pisac nowego kodu, wystarczy szybka podmianka, a chyba Konnekt nie bedzie wiecznie tworzony na MSVC 7.1?
KoSiarzPL
No wiesz niektórzy nie mają na takie "drobiazgi" czasu. Również jeden z przykładów ma błąd od dawien dawna, przez który się nie kompiluje (tak będę to ciągle wypominał). Takie życie.
piech
Chyba za bardzo sie pośpieszyłem
Wystarczy dodać
CODE
#define _STRING_

i przekonamy sie, że nie wystarczy szybka podmianka

Kompiluje pod MSVC++ 2005 Express Edition i w zależności od tego czy użyje

#include <string>, #include <string.h>, #iclude <cstring>
z
CODE
using namespace std;
bądź bez tego dostaje różne błędy

np: headers\konnekt\plug_func.h(179) : error C2653: 'std' : is not a class or namespace name
lub
moj_plik.cpp(30) : error C2871: 'std' : a namespace with this name does not exist

może ktoś ma juz gotowe pliki "plug_func.h", i "plug_defs.cpp" kompilujące się pod VC 2005?
KoSiarzPL
Ja kompiluję biblioteke kAPI używając MVS 2005 z poprawionym plikiem "plug_defs.cpp" oraz standardowym (tak mi sie wydaje) "plug_func.h" i nie mam żadnych błędów. Tylko ja nie ustawiam sam zmiennej _STRING_.
hao
Przed includowaniem plug_func.h daj

#include <string>

najlepiej w stdafx.h

Zmiany w nagłówkach odbywają się dla API w wersji 0.7. Wczoraj Milka miał naprawić SVN. Jak w końcu zaczeni działać jak trzeba możecie mi przecież podesłać patcha poprawiającego zarówno błąd w przykładach jak i te z kompilacją... po to właśnie jest kontrola wersji...
adrian_007
dokopie temat bo mam maly problem.
probuje skompilowac sobie wtyczke z przykladow pow vs2005 ale cos mi nie idzie.
mam sdk pod vs2005
kod wzialem z template.cpp
sciezka do naglowkow w ust. projektu - "../../../../libs/headers/c++/"
do projektu mam dolaczony plik plug_defs.cpp - z nim mam problem.

jak narazie z lenistwa stdafx skopiowalem z innego plugina ktorego robilem
CODE
#if !defined(AFX_STDAFX_H__D2B26BE7_3CE8_4401_937F_D46C2C820EC3__INCLUDED_)
#define AFX_STDAFX_H__D2B26BE7_3CE8_4401_937F_D46C2C820EC3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// Insert your headers here
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <stdarg.h>
#include <string>
#include <windows.h>

#include <crtdbg.h>
#include <tchar.h>
#include <time.h>
#include <hash_map>
#include <list>

#pragma warning(disable:4311)
#pragma warning(disable:4312)
#pragma warning(disable:4996)

using namespace std;

#include <konnekt/plug_export.h>
#include <konnekt/ui.h>
#include <konnekt/plug_func.h>

#ifdef _WIN32
# define snprintf _snprintf
# define snwprintf _snwprintf
#endif

typedef signed __int8 int8_t;
typedef signed __int16 int16_t;
typedef signed __int32 int32_t;
typedef signed __int64 int64_t;

typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
typedef unsigned __int64 uint64_t;

#define HASH_MAP hash_map
#endif //STDAFX_H

ale on raczej tu nie zawadza.
wszystko sie rozchodzi o definicje _STRING_ - kompilator mi krzyczy, ze nie mam zincludowanego <string> tyle ze mam
CODE
Error    4    error C3861: 'SetActParam': identifier not found    w:\visual studio projects\konnekt\moja_wtyka\first_one\fo\fo\plug_defs.cpp    556
Error    5    error C3861: 'ActParamExists': identifier not found    w:\visual studio projects\konnekt\moja_wtyka\first_one\fo\fo\plug_defs.cpp    557
Error    6    error C3861: 'SetActParam': identifier not found    w:\visual studio projects\konnekt\moja_wtyka\first_one\fo\fo\plug_defs.cpp    558
Error    7    error C3861: 'SetActParam': identifier not found    w:\visual studio projects\konnekt\moja_wtyka\first_one\fo\fo\plug_defs.cpp    560
Error    8    error C3861: 'SetActParam': identifier not found    w:\visual studio projects\konnekt\moja_wtyka\first_one\fo\fo\plug_defs.cpp    561


jak dodam
CODE
#include <string>

do plug_defs.cpp to i tak dalej sie krzaczy.
to samo z naglowkiem [jakby nie widzial tego include :?]

i o co tu chodzi?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.