Ir ao conteúdo
  • Cadastre-se

C++ Code Blokcs: como usar as opções do Linker?


Cambalinho

Posts recomendados

como usar as opções do Linker no Code Blocks?

eu tenho 1 class que usa o operador '='(overloading operators) e Lambdas.
eis como compila:

Citação

 

"

-------------- Clean: Debug in classcontrols (compiler: GNU GCC Compiler)---------------

Cleaned "classcontrols - Debug"

-------------- Build: Debug in classcontrols (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -g  -c C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp -o obj\Debug\main.o
g++.exe  -o bin\Debug\classcontrols.exe obj\Debug\main.o  -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32  -lgdi32 -luser32 -lkernel32 -lcomctl32 "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libmsimg32.a" "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libwinmm.a" "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libgdiplus.a" "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libgdi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\i686-w64-mingw32\lib\libbgi.a" -mwindows
In file included from C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp:1:
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h: In static member function 'static LRESULT label::WndProcLabel(HWND, UINT, WPARAM, LPARAM)':
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:2077:43: warning: comparison of integer expressions of different signedness: 'color' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
                     if (inst->clrBackColor==-1)
                         ~~~~~~~~~~~~~~~~~~^~~~
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h: In member function 'void form::setParent(HWND)':
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:2949:118: warning: passing NULL to non-pointer argument 1 of 'HWND__* CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID)' [-Wconversion-null]
                                   CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, parent, NULL, mod, this);
                                                                                                                      ^
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h: In static member function 'static LRESULT form::WndProcForm(HWND, UINT, WPARAM, LPARAM)':
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:2994:24: warning: unused variable 'KeyDownCount' [-Wunused-variable]
             static int KeyDownCount=0;
                        ^~~~~~~~~~~~
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp: At global scope:
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp:9:14: error: redefinition of 'std::__cxx11::wstring towstring(const string&)'
 std::wstring towstring(const std::string& v)
              ^~~~~~~~~
In file included from C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp:1:
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:359:14: note: 'std::__cxx11::wstring towstring(const string&)' previously defined here
 std::wstring towstring(const std::string& v)"

 

isto foi retirado do 'Build Log'. como vê tenho imensos erros, mas sei que é do compilador ou opções do Linker.

eu criei a classe, por isso funcionou na criação, mas após reinstalar o Code Blocks, perdi tudo... ao menos tenho a classe 😉

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

2 horas atrás, Cambalinho disse:

main.cpp:9:14: error: redefinition of 'std::__cxx11::wstring towstring(const string&)'

 

2 horas atrás, Cambalinho disse:

cambalinho.h:359:14: note: 'std::__cxx11::wstring towstring(const string&)' previously defined here

 

O compilador está sendo bem claro sobre o problema: Você definiu a função towstring() duas vezes; aparentemente na linha 9 do main.cpp e na linha 359 do cabeçalho cambalinho.h.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

tem razão.. eu resolvi isso e muito mais.. verdade algumas classes\funções estavam repetidas e nem me tinha apercebido....

agora tenho alguns avisos que não consigo resolver:

1)

hwnd = CreateWindowEx(0, classname, strCaption.c_str(),WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
                                  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, parent, NULL, mod, this);

tive de usar '0' para evitar 1 aviso.. e não posso usar 'NULL'.

 

2)

if (inst->clrBackColor==-1)

'clrBackColor' é 1 objeto de:

typeredef(COLORREF color);

o '-1' é transparente... se calhar deveria outro tipo de variável.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!