Gönderen Konu: VC++ 8 ile Derlemede Sorun  (Okunma sayısı 34014 defa)

VC++ 8 ile Derlemede Sorun

« : 31.01.2006 22:41:51 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
VC++ 8 Express kurdum platform SDK'nın kütüphanelerini kullanıyorum saatler sonra şu programı derlemeyi başardım.

vctest.c
Kod: [Seç]
#include <windows.h>

int WINAPI WinMain
(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  PSTR szcCmdLine,
  int iCmdShow
)
{
  MessageBox
  (
    NULL,
    TEXT(&quot;hede&quot;),
    TEXT(&quot;hodo&quot;),
    MB_ICONEXCLAMATION | MB_TASKMODAL
  );

  return 0;
}

Derleyen komut şu
cl vctest.c /nologo /link /DEFAULTLIB:USER32.LIB

sonuç
vctest.exe: crash.

Ama neden?

user32.lib'i gözüne sokmazsam MessageBox'a unresolved external symbol diyor ayrıca lcc'de buna gerek yoktu.

Hmm. User32'deki fonksiyonlar delleniyor User32.dll'nin bu işle bi alakası var sanırım.

VC++ 8 ile Derlemede Sorun

« Yanıtla #1 : 01.02.2006 00:14:51 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
evet scg'den bir yanıt mı geliyor :)

VC++ 8 ile Derlemede Sorun

« Yanıtla #2 : 01.02.2006 00:27:12 »
Hızlı düğmeleri aç

scg

İleti: 214

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
    • http://
Hehe ...

Verdiğin code u copy paste ettim ve 0 sorunla derledim çalıştı. VC++ 2003. Ama önceden VC++ 2005 Express Beta da kullanmışstım hiç bir farkı yok diye hatırlıyorum. Benim default Command line settings im şöyle :

Kod: [Seç]
/OUT:&quot;Debug/anes.exe&quot; /INCREMENTAL /NOLOGO /DEBUG /PDB:&quot;Debug/anes.pdb&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

MessageBox falan ve diğer tüm win32 api fonksiyonları .dll ler içinde gelir. ( user32.dll ve kernel32.dll) . Zaten .dll lerdeki fonksiyonların adres bilgileri de .lib dosyalarında tutulur. Yani link işlemi için şart. şimdi sen /NODEFAULTLIB opsiyonunu seçmediğin sürece yukarıda verdiğim command line settings (yada çok benzeri)default olarak bulunması lazım.  Açıkçası seni neden uğraştırdğını pek çözemedim şimdilik.

VC++ 8 ile Derlemede Sorun

« Yanıtla #3 : 01.02.2006 00:30:01 »
Hızlı düğmeleri aç

eirik

İleti: 312

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://localhost/
MessageBox yerine MessageBoxA kullanmayI dene bi olacak mI ?

VC++ 8 ile Derlemede Sorun

« Yanıtla #4 : 01.02.2006 00:35:23 »
Hızlı düğmeleri aç

chenmy1

İleti: 184

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
    • http://www.mosengine.inativa.com
evet scg nin dedigi gibi bende vc++ toolkit ile denedim ve sorunsuz calisti sanirim 4k felan deniycek soyle yapabilirsin ..

eger 4k deniyceksen.
ayarlardan
Kod: [Seç]
/NODEFAULTLIB diyip butun libleri pasif hale getirip

sadece
Kod: [Seç]
kernel32.lib user32.lib
aktif hale getirebilirsin ve optimizasyonlari acman gerek elimde sensei nin vermis oldugu bir ornek kod var istersen yolliyabilirim 4k icin kasiyorsan..

yok 4k ile ugrasmiyorum diyorsan direkt olarak
Kod: [Seç]
libc.lib link et matematik kutuphaneleri felan icinde sanirim...

tabi scg nin dedigi ayarlarida unutma
Kod: [Seç]
/OUT:"Debug/anes.exe" /INCREMENTAL /NOLOGO /DEBUG /PDB:"Debug/anes.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
Algoritmik Geometri^S!P and MEE!ditor 64/4 kb intro tool.

VC++ 8 ile Derlemede Sorun

« Yanıtla #5 : 01.02.2006 00:52:35 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
@erik: MessageBoxA yı bulamıyordu zaten ama denemiştim yine.
@chenmy1: ben alışmışım headerı ekleyince derleyicinin libleri halletmesine biraz yordu beni bu vc++ :) 4k değil çalışan bi şey yapmaya uğraşıyorum sadece.

/INCREMENTAL'ı ekleyince bi dll bulamadı. Zaten IDE'den derlemeye çalışınca database problemi hederelesi filan diyordu. SDK'yı eskiden kurmuştum VStudio üstüne kuruyorum şimdi.

VC++ 8 ile Derlemede Sorun

« Yanıtla #6 : 01.02.2006 18:18:33 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
sorun halloldu. şubat 2003 diyor sürekli bu sdk ama güncellenmeye devam ediyomuş, eski librarylerdeymiş sorun.

VC++ 8 ile Derlemede Sorun

« Yanıtla #7 : 02.02.2006 03:22:04 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
VC++ 8 ile sorun yaşama olayında daha bu başlangıç kardeşim :) Ben bunaldım ve VC++ 6'ya geri döndüm, mutlu mutlu takılıyorum. Ama ne yazık ki tezim için yeni versiyonu da kullanmak zorundayım. DirectX 9.0c'yi anca VS.NET 2003+ adam akıllı debug edebiliyor çünkü :(

VC++ 8 ile Derlemede Sorun

« Yanıtla #8 : 02.02.2006 15:41:41 »
Hızlı düğmeleri aç

Decipher

İleti: 482

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://beskrajnost.com
valla .net (ölsün bunu yapan kimse .net'i bunun başına koyana ....) 2003 kullanıyorum gayet de memnunum :)
100% pure coder pr0n

VC++ 8 ile Derlemede Sorun

« Yanıtla #9 : 02.02.2006 15:49:57 »
Hızlı düğmeleri aç

Ragnor

İleti: 901

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://ozanemirhan.blogspot.com
gcc diyip kaçayım hemen :).

Konu ile alakal değil ama dayanamadım işte.

VC++ 8 ile Derlemede Sorun

« Yanıtla #10 : 02.02.2006 16:36:41 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by Ragnor@Feb 2 2006, 03:49 PM
gcc diyip kaçayım hemen :).

Konu ile alakal değil ama dayanamadım işte.
[post=4968]Quoted post[/post]
[/b]
cc65 diicem ama hiç kullanmadım saçmalamiim şimdi :P

Kronolojik sırayla kullandığım C Compilerları:

1) Turbo C++
2) DJGPP
3) Watcom C++
4) Visual C++ v5.0 (1 hafta kullandım ehehe)
5) Visual C++ v6.0
6) LCC (Spritus yüzünden kullanmak zorunda kaldım :))
7) Visual C++ .NET 2003

Borland C'yi ise hiç kullanmadım, sadece bir iki code'umu Borland'da da derlenebilir hale getirmiştim.

Bunların arasında 16 bitlerden Turbo C++'ı severim, çünkü adam akıllı bir editörü ve help'i vardır. 32 bitlerden ise Visual C++ v6.0 gayet yeterlidir bence. DirectX olayı karıştırıyor o başka :)

Sizlerden başka compilerlar kullananlar oldu mu? Tavsiyeleriniz var mı?

P.S: Linux kullanmadığım için gcc ile çok haşır neşir olmadım ancak bir ara Cygwin'e daldıydım.

VC++ 8 ile Derlemede Sorun

« Yanıtla #11 : 02.02.2006 16:59:58 »
Hızlı düğmeleri aç

Ragnor

İleti: 901

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://ozanemirhan.blogspot.com
Sen böyle yazında bir düşündüm de gerçekten de kullandığım tek C derleyicisi gcc olmuş bugüne kadar. VS kurmuştum bilgisayarıma ama onu kullanana kadar Dev-Cpp'ye geçiş yapmıştım Turbo C++'sı ise hiç kullanmak zorunda kalmadım. Ne mutluymuş bana :)
Saydığın diğer derleyiciler içinde güzel şeyler duydum hatta sanırım watcom'uda kurdum bilgisayara ama birşey derlemedim. O yüzden sayılmaz.
Tavsiyem Gnu Compiler Collection tabiki :). ılk önce özgürlük çünkü :P.

VC++ 8 ile Derlemede Sorun

« Yanıtla #12 : 02.02.2006 20:24:57 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
gcc'den sonra ikinci göz ağrım olan lcc'yi 4 sene sonra bırakmaya karar verdim. bu ayrılıkta ikimizin de suçu vardı. ben zaman zaman onu hor kullanıyor, zaman zaman anladığı dilden uzaklaşıyordum. o da çoğu kez bana kızdığı için bazen de uyuz yapısından ötürü çıldırmama sebep oldu. özellikle son dönemlerde derlediği kodlar kafa göz yardıracak cinstendi. bu yüzden daha fazla birbirimizi üzmeden yollarımızı ayrımaya karar verdim. ama bu ayrılığa en çok üzülen taraf sanırım benim.  :unsure:

melankoliyi bir kenara bırakırsak iyi güzel küçücük exeleri hızlıca yapıyordu yapmasına ama artık "float a ;" satırında bile crash edebilecek ilginç yapısı beni vc'ye geçmeye zorladı. ona da yavaş yavaş alışıyorum. henüz stabil bir çıktı alamadım ama az çok bi şeyler yapabildi :) şimdilik ilişkimizde sorun yok ama ileride ne olur bilemem.

bu arada bu lcc'yi yapan adamlar bir adet c++ derleyicisi üzerinde çalışıyomuş. ama sadece ücretsiz programları derlemede ücretsiz kullanılabilecekmiş.

VC++ 8 ile Derlemede Sorun

« Yanıtla #13 : 02.02.2006 21:31:24 »
Hızlı düğmeleri aç

nightlord

İleti: 1.085

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.nightnetwork.org
Gerek kendi projelerimde gerek işte ben de yıllardır gcc ve türevlerini kullanıyorum. Yalnızca windows veya linuxtaki türevlerini değil, sadece embeddedcilerin karşısına çıkan MIPS,ST gibi varyasyonlarını bile kullandım.

Temel algoritmalarda ve veri yapılarındaki optimizasyonların yetersiz kalıp da derleyicinin atmayı akıl edeceği son birkaç komutun getireceği hıza hiç ihtiyacım olmadı şimdiye kadar (o kadar kritik yerleri assembler kullanarak gerçeklemeyi seçtim ama çok çok ender). Bence çok kritik olan bir nokta code'un çalışma zamanı cache optimizasyonunu yapmak. yani veri yapılarının bellekte alokasyon ve yerleşimini öyle ayarlayın ki veri erişimleri esnasındaki "cache miss" durumları minimize olsun. (derinlemesine incelemek isteyenler için bkz. "Locality of Code")

Büyüklük optimizasyonu açısından gcc'nin uygunluğu hakkında fikrim yok.

MS compilerlarının da çok iyi olduğuna dair çok güvendiğim kaynaklardan yorumlar aldığımı da belirteyim.

VC++ 8 ile Derlemede Sorun

« Yanıtla #14 : 02.02.2006 21:42:03 »
Hızlı düğmeleri aç

Ragnor

İleti: 901

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://ozanemirhan.blogspot.com
Birşey soracağım tercihiniz neden vc? Geneliniz vc kullanıyorda. Ve niye gcc değil? Bu konuda özel bir sebep var mı? Varsa bilmek isterimde :).