2009/04/30

Delphi 2010 v14.0.3391.20582



인터넷으로 우연히 Delphi 2010 버전에 대한 소식을 접하게 되었다.

Delphi 2010 버전의 경우 64비트를 지원한다는데 상당히 기대 되는 버전 이었는데 벌써 베타 버전이 나온 듯 하다. 그래서 인터넷 사이트를 둘러 보았는데 Delphi 2010 버전에 대한 정보가 심심치 않게 올라오고 있었다.


"Delphi 2010" 키워드 만으로는 검색되는 내용이 2010버전에서 지원되는 사항과 간단한 스크린 샷 정도인데 빌드 번호 "v14.0.3391.20582"로 검색을 해 보면 현재 누출된 베타 버전에 대한 정보도 찾을 수 있었다.


대부분 중국사이트를 통해 누출이 되었는데 다운 받아서 설치를 해 봐야겠다.


구글의 "14.0.3391.20582" 검색 결과


검색 결과에 포함되어 있는 몇몇 사이트들

http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=9877.0

http://hi.baidu.com/delphilee/blog/item/bbcac734e97f4546241f1437.html

http://www.programbbs.com/bbs/printpage.asp?BoardID=12&id=19537

http://bbs.2ccc.com/topic.asp?topicid=32105

Original Post : http://neodreamer-dev.tistory.com/299

2009/04/27

굿모닝팝스 MP3 재생및 다운로더 v2 build 16 (KBS TUNE 서비스 대응)



이전에 공개한 굿모닝팝스 MP3 재생기에 불편한 점이 있어 아주 조금 수정한 버전이다.



매일 이 프로그램을 이용하여 GMP를 들을 경우 매번 날짜를 선택한 후 재생을 눌러야했는데 이를 개선하여 프로그램 시작시나 리스트 새로고침 수행시 가장 첫 번째 목록을 자동으로 선택하여 재생만 누르면 바로 들을 수 있도록 수정하였다.


MySQL Connector/C++ 1.0.5 GA Library for VC++ 2005

얼마전 공개된 Connector/C++ 1.0.5 GA 버전의 라이브러리를 만들었다.


1.0.4 버전 부터는 빌드된 바이너리 파일을 제공하고 있기는 하지만 내가 사용하기에는 문제가 있어 보여 직접 만들었다.


공 개된 binary library를 이용하며 테스트 할 때, Release 모드에서는 문제가 없어 보이는데 Debug 모드에서 사용하려면 정상동작을 하지 않았다. 예전에도 비슷한 문제가 있었는데 Debug 모드에서는 Connector/C++ 또는 Debug 용 Dll 을 사용하면 문제가 없었는데 배포본에는 Debug 용이 포함되어 있지 않다. 설치 패키지(.msi)에는 포함되어 옵션으로 설정하여 설치할 수 있지만 이는 Visual Studio 2008용만 있고 Visual Studio 2005 용은 제공하지 않고 있다. 그래서 직접 작업을 하였다.


환경은 Visual Studio 2005 와 CMake 2.6.3 그리고 MySQL 5.0.77 버전을 이용하였다. 그리고 각 압축파일에는 DLL 과 Library 그리고 소스가 포함되어 있다.








2009/04/23

[VCL] 프로그램의 최소화(Minimize) 및 복구(Restore) 이벤트 잡기

VCL 의 TForm 에는 최소화(Minimize) 및 복구(Restore) 이벤트 핸들러가 없다. 그래서 TApplication 의 이벤트 핸들러를 이용해야 한다.


// Header
void __fastcall OnAppMinimize(TObject *Sender);
void __fastcall OnAppRestore(TObject *Sender);


// Source
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
Application->OnMinimize = OnAppMinimize;
Application->OnRestore = OnAppRestore;
}

void __fastcall TfrmMain::OnAppMinimize(TObject *Sender)
{
ShowMessage("App Minimized");
}

void __fastcall TfrmMain::OnAppRestore(TObject *Sender)
{
ShowMessage("App Restored");
}


Original Post : http://neodreamer-dev.tistory.com/296

2009/04/22

드디어!! MySQL Connector/C++ 1.0.5 GA 릴리즈

Preview 버전을 공개한지 8개월 만에 정식판을 공개 하였다.

Preview 버전부터 소스를 컴파일 하여 프로젝트에 사용해 왔는데 MySQL C API 를 사용하는 것 보다 사용하기 편하였다.

JDBC 구조를 사용하여 JDBC를 사용해 본 사람에게는 보 다 더 가깝께 느껴질 수 있다.

1.0.4 Beta 버전 부터 각 플랫폼의 컴파일러 마다 생성된 Binary를 지원해서 소스를 컴파일 해서 사용해야하는 불편이 사라졌다.

그전에는 정적라이브러리에서 문제가 있어 보였는데 정식판을 어떠한지 확인을 해 보아야 겠다.


MySQL Connector/C++ 1.0.5 GA (21.04.2009)

  • Changed the interface of sql::ConnectionMetaData, sql::ResultSetMetaData and sql::ParameterMetaData to have a protected destructor. In this way the client code doesn't need, and won't be able, to destruct the metadata objects returned by the connector. The connector will handle their destruction. This enables statements like: connection->getMetaData->getSchema(); without the result of leaking memory because we lost the pointer returned by getMetaData(). (Lawrin, Andrey)

  • Large overhaul of the code to improve the memory management to not leak in exceptional situations. Big improvement compared to Beta1. (Andrey)

  • Fixed the interface of sql::Driver and sql::Connection so they accept the options map by alias instead of by value. (Andrey)

  • Changed the return type of sql::SQLException::getSQLState() from std::string to const char
  • to be consistent with std::exception::what(). (Andrey)

  • Implemented getResultSetType() and setResultSetType() for Statement. Used are TYPE_FORWARD_ONLY, which means unbuffered result set and TYPE_SCROLL_INSENSITIVE, which means buffered result set. (Andrey)

  • Implemented getResultSetType() for PreparedStatement. The setter is not implemented because currently PreparedStatement can't do refetching and storing the result means the bind buffers will be correct. (Andrey)

  • Added "defaultStatementResultType" to MySQL_Connection::setClientOption() as an option. Also the method now returns `sql::Connection *`. (Andrey)

  • Added Result::getType() and implemented it in the three result set classes.(Andrey)

  • Enabled tracing functionality when building with VC8 and up (VS2005 and up). (Andrey)

  • Added better support for named pipes, on Windows. Use pipe:// and add the path to the pipe. Shared memory connections are currently not supported. (Andrey)

  • Fixed a bug in MySQL_Connection::setSessionVariable() which led to exception being thrown. (Andrey)



MySQL Connector/C++ Wiki
MySQL Connector/C++ Download
Original Post :
http://neodreamer-dev.tistory.com/295

2009/04/21

굿모닝팝스 MP3 재생및 다운로더 v2 build 15 (KBS TUNE 서비스 대응)

예전에 만들어 놓은 굿모닝 팝스 MP3 다운로더는 KBS 의 TUNE 서비스로인해 단팥에서 제공하는 서비스가 종료되어 더이상 사용할 수 없게 되었다.


몇 일 신경을 쓰지 못하다가 서비스가 변경된 걸 알게되어 다시 만들었다. 개인적으로 사용하려 만든거라 완성도는 그리 높지 않다.


GmpMP3 메인화면

GmpMP3 메인화면




프로그래밍 연습 삼아 만든 것으로 예전 소스를 조금만 바꾸면 되는 것을 다시 새로 만들어 보았다. XML 처리 루틴을 바꾸고 작업표시줄을 깔끔하게 하기 위해 트레이 아이콘을 지원하도록 만들어 보았다.


사용법은 방송 목록에서 듣고 싶은 항목을 선택하여 재생 버튼을 누르기만 하면 된다. 다운로드 받으려면 다운로드 버튼을 이용하면 되고, 더욱 빨리 다운받기 위해 다른 다운로더에 복사할 다운로드 주소가 필요할 경우 주소복사를 이용하면 된다.


설정 메뉴를 이용하면 RSS 정보와 간단한 UI 설정을 할 수 있다.


GmpMP3 설정화면

GmpMP3 설정화면



[VCL] TImageList 의 이미지를 TSpeedButton 에서 사용하기

TImageList는 여러 이미지를 담아두고 인덱스로 접근하여 사용할 수 있는 컴포넌트 이다. 이 TImageList 의 이미지를 TSpeedButton에 할당해 보았다.

방법은 아주 간단하다. 아래의 한 줄짜리 코드가 그 것이다.


// ImageList 의 첫번째 인덱스(실제로는 두 번째)의 이미지를 
// SpeedButton 에 할당한다.
ImageList->GetBitmap( 1, SpeedButton->Glyph );



위의 코드는 ImageList 의 특정이미지를 SpeedButton 에 할당을 하는데 위와 같은 코드를 한 번 더 사용하여 다른 이미지를 할당하려 하면 되지 않았다.
새로운 이미지를 할당하기 위해서는 TBitmap 포인터를 생성하고 포인터 값을 할당 한 후에 SpeedButton 의 Glyph 에 할당하면 된다.


Graphics::TBitmap* Bitmap = SpeedButton->Glyph;
ImageList->GetBitmap( 2, Bitmap );
SpeedButton->Glyph = Bitmap;



위의 코드 실행시 이미지를 바꿀 수 있다. 하지만 위의 코드도 문제가 있다. 배경이 투명한 이미지가 아닐 경우 덮어 씌우기 때문에 문제가 되지 않지만 아이콘과 같은 투명한 이미지를 적용시 이전 이미지가 남아 있는 문제가 있었다. 이를 해결하기 위해서 새로운 이미지를 할당하기 전에 SpeedButton 의 Glyph 에 NULL 을 할당하면 해결할 수 있다.



Graphics::TBitmap* Bitmap = SpeedButton->Glyph;
SpeedButton->Glyph = NULL;
ImageList->GetBitmap( 2, Bitmap );
SpeedButton->Glyph = Bitmap;


Original Post : http://neodreamer-dev.tistory.com/293

2009/04/17

C++ Builder 2009에서 TIdHTTP의 Get 함수를 이용시 한글 문제

새로 바뀐 굿모닝 팝스 RSS를 분석해 보기 위해서 Indy v10 컴포넌트의 TIdHTTP를 이용해 XML 문서를 가져왔는데 이상하게 한글이 깨져버렸다. RSS 인코딩은 euc-kr 이였고 TIdHTTP 의 Get 함수를 통해 얻은 결과가 UnicodeString 이라서 문제가 발생한게 아닌가하여 AnsiString 으로 바꾸어도 보았지만 한글이 비정상적으로 나왔다.


// strRSSUrl 의 소스 받기
UnicodeString strXML = IdHTTP->Get( strRSSUrl );



그래서 인터넷에서 관련 정보를 찾다가 일본 웹페이지에서 델파이를 사용할때 비슷한 문제가 발생하여 해결 했다는 글을 찾았다. 그 글을 참고하여 C++ Builder 로 바꾸어 보았다. 아래 코드가 바꾼 코드이다.


// Stream 으로 받아서 Encoding 을 하여 받는 방법
TMBCSEncoding* pEnc = new TMBCSEncoding( 949 );
TMemoryStream* pStream = new TMemoryStream();

IdHTTP->Get( strRSSUrl, pStream );

pStream->Position = 0;

TStrings* pStrXML = new TStringList();
pStrXML->LoadFromStream( pStream, pEnc );

AnsiString strContentXML = AnsiString( pStrXML->GetText() );
int size = strContentXML.Length();

pEnc->Free();
pStream->Free();
pStrXML->Free();



위의 코드로 하니 한글이 깨지지 않았다. 그렇지만 완전한 해결책은 아닌 것 같다.

두가지 방법으로 다른 웹페이지를 접근해 보았는데 Stream 으로 받아 Encode을 거쳐 받는 방법이 항상 한글이 정상적으로 보여지지는 않았다. 웹페이지의 인코딩 방법에 따른 것도 아닌 것 같고, 일단 GMP RSS 분석에서는 문제가 없었지만 깔끔하게 해결하기 위해서는 문제의 원인을 먼저 파악 해

Original Post : http://neodreamer-dev.tistory.com/292

C++ Builder 2009 Bug on Windows 7

64비트 개발을 해야해서 XP x64를 사용하다가 차기 운영체제인 Windows 7 에 눈길을 돌렸다. 아직 정식이 발표되지 않았지만 기존의 비스타보다 사용자들의 평이 좋아서 비스타를 뛰어 넘고 Windows 7 x64 7068을 사용해 보았다.


업무에 사용하는 툴은 Visual C++ 이지만 개인적으로는 C++ Builder에 관심을 두고 있다.


Visual C++ 의 경우는 현재의 Project를 x64 기반에서 작업하는데 문제가 없었다.  그래서 C++ Builder는 문제가 없는지 테스트 해 보았다. 작은 프로젝트를 생성하여 간단한 코드를 작성해 보았다. 프로그램 작성에는 큰 문제가 없어 보였는데 가끔 프로그램 종료시에 아래와 같은 에러가 발생하였다.




위의 메세지에서 Yes를 선택하건 No를 선택하건 프로젝트를 컴파일 할 때 문제가 발생하였다. 컴파일이 잘 되는 것 처럼 보이더니 마지막에 에러 한 줄을 내 뱉고 컴파일이 완료 되지 않았다.






IDE가 비정상 종료로 끝나서 인지 IDE에서 Project.tds 파일을 물고 있어서 문제가 되는 것 같았다. 프로젝트를 닫고 재 오픈하여 시도를 해도 안되며 C++ Builder를 종료 한 후에 다시 실행시켜야만 해결이 되었다.


인터넷에서 이와 같은 에러에 대해서 찾아 보았지만 많지 않았다. 개발툴 제작사인 Embarcadero에도 보고가 된 것 같은데 아직까지 해결책이나 우회 방법은 없는 것 같다.


릴리즈 모드에서는 발생하지 않는 것 같기는 한데 프로그램을 만들 땐 디버깅 모드가 필수라 크게 의미가 없어 보인다.


앞으로는 Windows 7 을 사용해야 하기 때문에 빨리 개선방법이나 우회 방법이 나왔으면 좋겠다.


Embarcadero의 리포팅 내용

Windows 7 beta 버전에서 문제가 발생한 블로거의 포스팅
Original Post :
http://neodreamer-dev.tistory.com/291

2009/04/14

[VCL] 작업표시줄의 프로그램 버튼 숨기기

프로그램 실행 시 작업표시줄(Taskbar)에 나타나는 프로그램 버튼을 숨기기 위해서는 MainForm 의 부모인 Application을 ShowWindow로 숨기면 된다.

void __fastcall TfrmMain::FormShow(TObject *Sender)
{
ShowWindow( Application->Handle, SW_HIDE );
}



이 방법은 C++ Builder 2007 이전에만 적용되며 C++ Builder 2007 이후에 만들어진 프로젝트의 경우 한가지 설정을 대 해 주어야 한다.

Application 이 초기화 되고 MainForm이 생성되기 전에 Application의 MainFormOnTaskBar 속성을 false로 설정해 주어야 위의 코드가 정상적으로 처리가 된다.

WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
try
{
Application->Initialize();
Application->MainFormOnTaskBar = false;
Application->CreateForm(__classid(TfrmMain), &frmMain);
Application->Run();
}
:

return 0;
}



MainFormOnTaskBar 속성은 Delphi 2007 버전부터 추가된 속성으로 작업표시줄의 프로그램 버튼을 어떻게 핸들링 할지를 설정하는 기능이다. 이 속성을 Vista 이후에 추가된 기능을 지원하기 위해 추가 되었다고 한다.

MainFormOnTaskBar 속성이 true 이면 메인폼의 프로그램 타이틀을 작업표시줄에 출력하고, false 이면 Application의 타이틀을 출력한다.


참고자료
Hide a Delphi Application Button from the TaskBar
Hide a Delphi 2007 Application Button from the TaskBar
박지훈님(볼랜드 포럼)의 MainFormOnTaskbar에 대한 글


Original Post : http://neodreamer-dev.tistory.com/290

SQLite 3.6.13 Library

For C++ Builder

2008/12/07 - [Dev Story/Tips] - C++ Builder 용 SQLite 정적 라이브러리 만들기












For Visual C++

2008/12/07 - [Dev Story/Tips] - Visual C++ 용 SQLite 정적 라이브러리 만들기







SQLite 3.6.13 Released!!

3.6.13 버전에서 바뀐 내용


  • Fix a bug in version 3.6.12 that causes a segfault when running a count(*) on the sqlite_master table of an empty database. Ticket #3774.

  • Fix a bug in version 3.6.12 that causes a segfault that when inserting into a table using a DEFAULT value where there is a function as part of the DEFAULT value expression. Ticket #3791.

  • Fix data structure alignment issues on Sparc. Ticket #3777.

  • Other minor bug fixes.

SQLite
SQLite Release Notes
SQLite Download page

Original Post :
http://neodreamer-dev.tistory.com/288

2009/04/03

VS2005 에서 Wizard 대화상자 Script Error 해결하기

개발 환경을 Windows 7 으로 바꾼 후 Visual Studio 2005의 리소스 편집기에서 대화상자를 추가하고 Add Class... 를 실행하면 스크립트 에러가 발생하고 클래스 대화상자에서 Base Class 목록이 나오지 않았다.

Script Error

Script Error



Wizard 대화상자

Wizard 대화상자



Wizard 대화상자가 DHTML Dialog로 만들어져서 보안 설정에 문제가 있어 그런것으로 짐작 되었다. 그래서 보안 설정을 이리저리 바꾸어 보아도 변화가 없었다. 그래서 인터넷을 찾아보다가 Visual C++ Team Blog 에서 해결책을 찾았다.


역시나 Explorer의 보안 설정이 문제였다. 이를 해결하기 위해서는 Registry에 키 하나를 추가 하면 된다.

추가할 위치는 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones 이다. 이 위치에 1000 키를 추가하고 그 아래에 DWORD 항목을 추가 한다. 이름은 1207로 하고 값을 0x0000000 으로 해준다.

키 입력하기

키 입력하기



새로 입력된 키 - 1000

새로 입력된 키 - 1000



DWORD 항목 추가하기

DWORD 항목 추가하기



추가된 DWORD 항목 - 1027 / 0x00000000

추가된 DWORD 항목 - 1027 / 0x00000000






관련 자료 출처 : Visual C++ Team Blog
Original Post :
http://neodreamer-dev.tistory.com/287

사라진 Tahoma를 찾아라.

얼마전 개발 환경을 Windows 7 x64 로 바꾸었다.


그런데 리소스를 편집할 때 대화상자 속성의 폰트 설정에 Tahoma 폰트가 보이지 않았다. 프로젝트의 모든 대화상자의 기본 폰트로 Tahoma를 사용하기 때문에 Tahoma 설정이 꼭 필요하다.

Tahoma가 보이지 않는 Font 설정 대화 상자

Tahoma가 보이지 않는 Font 설정 대화 상자



그래서 윈도우즈의 폰트 폴더에서 달라진게 있는지 보았다. XP에서는 없던 Show/Hide 컬럼이 보였다. 그리고 Tahoma 폰트를 확인해 보니 Hide 로 설정되어 있었다.
폰트 폴더의 Tahoma

폰트 폴더의 Tahoma



Tahoma 폰트에서 오른쪽 버튼을 눌러보니 Show 메뉴가 보였다. Show 메뉴를 선택하여 Tahoma 폰트의 Show/Hide 컬럼 값이 변경이 되었다.

Tahoma 폰트가 보여지도록 설정한 화면

Tahoma 폰트가 보여지도록 설정한 화면



그리고 다시 Visual Studio 의 리소스 편집기에서 대화상자 폰트 속성을 확인해 보니 Tahoma 폰트가 보였다.

Tahoma가 보여지는 Font 설정 대화 상자

Tahoma가 보여지는 Font 설정 대화 상자

Original Post : http://neodreamer-dev.tistory.com/286

2009/04/02

SQLite 3.6.12 Library

얼마전 공개된 SQLite 3.6.12 버전의 라이브러리를 만들어 보았다. Visual C++ 과 C++ Builder 용으로 만들었는데 아직 테스트는 하지 않았지만 만드는 방법이 다르지 않아 문제가 없어 보인다.













SQLite 3.6.12 Released!!

3.6.12 버전에서 바뀐 내용
  • Fixed a bug that caused database corruption when an incremental_vacuum is rolled back in an in-memory database. Ticket #3761.
  • Added the sqlite3_unlock_notify() interface.
  • Added the reverse_unordered_selects pragma.
  • The default page size on windows is automatically adjusted to match the capabilities of the underlying filesystem.
  • Add the new ".genfkey" command in the CLI for generating triggers to implement foreign key constraints.
  • Performance improvements for "count(*)" queries.
  • Reduce the amount of heap memory used, especially by TRIGGERs.

SQLite
SQLite Download page
Original Post :
http://neodreamer-dev.tistory.com/284

2009/04/01

Delphi Tweak - Delphi Distiller v1.61

1. WHAT IS DELPHI DISTILLER

Delphi Distiller is a customization tool for Delphi 5/6/7/2006/2007/2009 that

lets you manage packages and experts and apply several tweaks.





2. FEATURES

Choose what packages and experts are loaded by Delphi 5/6/7/2006/2007/2009.



File associations manager for Delphi 5/6/7/2006/2007/2009.



Delphi 5 tweaks:

- Don't create .~bpl files.

- Don't create .cfg files.

- Use Tahoma font by default.

- Don't show splash screen.

- Customize editor colors.

- Trial to Retail conversion.



Delphi 6 tweaks:

- Don't create .~bpl files.

- Don't create .ddp files.

- Don't create .cfg files.

- Use Tahoma font by default.

- Don't show splash screen.



Delphi 7 tweaks:

- Don't create .~bpl files.

- Don't create .ddp files.

- Don't create .cfg files.

- Use Tahoma font by default.

- Don't show splash screen.



Delphi 2006 tweaks:

- Don't create .~bpl files.

- Don't create .local files.

- Don't create .cfg files.

- Remove toolbar gradients.

- Fix TabStop bug in TFrame's.

- Don't show splash screen.



Delphi 2007 tweaks:

- Don't create .~bpl files.

- Don't create .local files.

- Don't check for updates when the IDE starts.

- Avoid loading of additional .NET crap by delphicoreide100.bpl.

- Remove toolbar gradients.

- Don't show splash screen.



Delphi 2009 tweaks:

- Don't create .~bpl files.

- Don't create .local files.

- Don't check for updates when the IDE starts.

- Avoid loading of additional .NET crap by delphicoreide120.bpl.

- Don't show splash screen.




Ctrl + Alt + L 에 숨겨진 기능이 있습니다.


Delphi Distiller

Delphi Distiller 1.61 Download







Original Post : http://neodreamer-dev.tistory.com/283

MySQL 매뉴얼에 포함되어 있는 Connector/C++ 이용한 프로그램 작성

필요할 때가 있을 것 같아서 접근하기 쉽도록 MySQL 매뉴얼에 포함되어 있는 Connector/C++ 컴파일 방법을 스크랩 하였다.



20.6.3. MySQL Connector/C++ Building applications on Windows



MySQL Connector/C++ is available as a static or dynamic library to use with your application. This section looks at how to link the library to your application.



Static library



The MySQL Connector/C++ static library file is mysqlcppconn-static.lib. This needs to be statically linked with your application. You also need to link against the files libmysql.dll and libmysql.lib. Once linking has been successfully completed, the application will require access to libmysql.dll at run time.



Dynamic library



The MySQL Connector/C++ dynamic library file is mysqlcppconn.dll. In order to build your client application you need to link it with the file mysqlcppconn.lib. At run time the application will require access to the files mysqlcppconn.dll and libmysql.dll.



Building an application using the static library - step-by-step


  • Select File, New, Project from the main menu. Then in the wizard select Visual C++, Win32. From Visual Studio Installed Templates select the application type Win32 Console Application. Enter a name for the application, and then click OK, to move to the Win32 Application Wizard.


  • In the Win32 Application Wizard, click on Application Settings and ensure the defaults are selected. The radio button Console application, and the checkbox Precompiled headers will be selected.


  • From the drop down list box on the toolbar, change from the default Debug build to the Release build.


  • From the main menu select Project, Properties. This can also be accessed using the hot key ALT + F7.


  • Under Configuration Properties, open the tree view.


  • Select C++, General in the tree view. Then in the Additional Include Directories text field, add include/.


  • In the same tree view under Linker, General, add lib/opt into the Additional Library Directories text field.


  • Also in Linker, General, Additional Library Directories, add MySQL Server lib/opt for libmysql.lib.


  • Then in Linker, Input, Additional Dependencies, enter mysqlcppconn-static.lib and libmysql.lib.

      ------ Rebuild All started: Project: cpp_static_client, Configuration:  Release Win32 ------
    Deleting intermediate and output files for project 'cpp_static_client', configuration 'Release|Win32'
    Compiling...
    cpp_static_client.cpp
    stdafx.cpp
    Linking...
    cpp_static_client.obj : error LNK2001: unresolved external symbol __imp__get_driver_instance
    cpp_static_client.obj : error LNK2001: unresolved external symbol "__declspec(dllimport)
    public: int __thiscall sql::SQLException::getErrorCode(void)const "
    (__imp_?getErrorCode@SQLException@sql@@QBEHXZ)
    cpp_static_client.obj : error LNK2001: unresolved external symbol "__declspec(dllimport)
    public: class std::basic_string,
    class std::allocator > const & __thiscall
    sql::SQLException::getSQLState(void)const "
    (__imp_?getSQLState@SQLException@sql@@QBEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
    C:\Dokumente und Einstellungen\T60\Eigene Dateien\Visual Studio 2008\Projects
    \cpp_static_client\Release\cpp_static_client.exe : fatal error LNK1120: 3 unresolved externals
    Build log was saved at "file://c:\Dokumente und Einstellungen\T60\Eigene Dateien\Visual Studio 2008\
    Projects\cpp_static_client\cpp_static_client\Release \BuildLog.htm"
    cpp_static_client - 4 error(s), 0 warning(s)



  • In the Project, Properties tree view, under C++, Preprocessor, enter CPPCONN_PUBLIC_FUNC= into the Preprocessor Definitions text field.




Building an application to use the dynamic library - step-by-step




  • From the main menu select File, New Project. Then in the wizard select Visual C++, Win32. Under Visual Studio installed templates select Win32 Console Application. Enter a suitable name, and then click OK to enter the Win32 Application wizard.


  • In the Win32 Application Wizard, click on Application Settings. Use the default settings. The Console application radio button, and Precompiled header checkbox should be selected. Click Finish to close the wizard.


  • From the drop down list box on the toolbar, change from the default Debug build to the Release build.


  • From the main menu select Project, Properties. This can also be accessed using the hot key ALT + F7.


  • Under Configuration Properties, open the tree view.


  • Under C++, General, add include/ into the Additional Include Directories text field.


  • Under Linker, General, add lib/opt into the Additional Library Directories text field.


  • Under Linker, Input, add mysqlcppconn.lib into the Additional Dependencies text field.


  • In the Editor, copy standalone_example_docs1.cpp, and add #include "stdafx.h" at the top of the file.


  • From the main menu select Build, Build Solution, to build the solution.


  • Open a command prompt by selecting Start, Execute, and entering cmd. Go to the build directory for the project, and change into the Release directory.


  • Run the application. You will receive an error: “cannot find mysqlcppconn.dll”.


  • Copy mysqlcppconn.dll to the working directory or extend the PATH environment variable using SET PATH=%PATH%;C:\path\to\cpp. Alternatively, you can copy mysqlcppconn.dll to the Windows installation Directory, typically c:\windows.
    Original Post : http://neodreamer-dev.tistory.com/282

MySQL Connector/C++ 1.0.4 beta Library 정식 배포




Connector/C++ 이 Alpha 딱지를 떼고 Beta 딱지를 붙이고나서 드디어 정식으로 라이브러리 제공을 시작하였다.

1.0.4 버전 이전에는 소스를 받아서 필요한 플랫폼에서 컴파일을 해서 직접 라이브러리를 만들어서 사용해야했는데 이제는 각각의 운영체제에 맞는 라이브러리를 제공한다.

현재(2009/04/01) 지원하는 운영체제는 다음과 같다.
  • Windows
  • Windows x64
  • Linux (non RPM packages, glibc-2.3)
  • Red Hat Enterprise Linux 5 (non RPM packages)
  • Red Hat Enterprise Linux 4 (non RPM packages)
  • SuSE Linux Enterprise Server 9 (non RPM packages)
  • SuSE Linux Enterprise Server 10 (non RPM packages)
  • Solaris (TAR packages)
  • FreeBSD (TAR packages)
  • Mac OS X (TAR packages)
  • HP-UX (TAR packages)
  • AIX (TAR packages)

라이브러리를 직접 배포하니 신뢰도 또한 더 높으리라 생각 된다. 직접 라이브러리를 만들어 사용할 때는 정적라이브러리에서 링크문제로 사용하지 못했는데 정식 버전은 어떤지 테스트 해 봐야 겠다. 그리고 C++ Builder 에서도 사용 가능한지도 테스트 해 봐야 겠다.

Connector/C++ Download Page

Download Connector/C++ 1.0.4 beta Windows MSI Installer (x86)
Download Connector/C++ 1.0.4 beta Without installe (x86)
Download Connector/C++ 1.0.4 beta Windows MSI Installer (AMD64 / Intel EM64T)
Download Connector/C++ 1.0.4 beta Without installe (AMD64 / Intel EM64T)

Original Post : http://neodreamer-dev.tistory.com/281