私たちのアプリを VC++6 から VC++ 2010 にアップグレードする任務を負っています。少し時間を費やした後、正常にコンパイルすることができました。ただし、リンクは失敗します:(
The linker error I'm getting is:
Error 33 error LNK2019: unresolved external symbol _SQLConfigDataSource@16 referenced in function "protected: void __thiscall CReportPropertyPage4::OnViewReport(void)" (?OnViewReport@CReportPropertyPage4@@IAEXXZ) <redacted>\ReportPropertyPages.obj
私はリンカ エラーのデバッグ経験がないことを最初に認めますが、リンカに適切な .lib ファイルを含める必要があることをオンラインで調査しました。
そこで、先に進んでプロジェクトのプロパティ ページを開き、リンカーの下に移動し、[入力] タブの [追加の依存関係] の下に .lib への参照を追加しました。
$(ProjectDir)\lib\odbccp32.lib (注、実際には .lib のコピーを上記のフォルダーに作成しました)。
しかし、サイコロはありません。
odbcinst.h は、関数 SQLConfigDataSource を定義するファイルです (および含まれています)。
BOOL INSTAPI SQLConfigDataSource (HWND hwndParent,
WORD fRequest,
LPCSTR lpszDriver,
LPCSTR lpszAttributes);
そしてそれに関連する私の呼び出し:
CString strParameters;
strParameters.Format(
"DSN=<Redacted> ASCII\0"
"Description=<Redacted> ASCII\0"
"CharacterSet=ASCII\0"
"ColNameHeader=False\0"
"Format=TabDelimited\0"
"DEFAULTDIR=%s\0"
"EXTENSIONS=txt\0\0", strTempDir );
if( SQLConfigDataSource( NULL, ODBC_ADD_DSN, "Microsoft Text Driver (*.txt; *.csv)",
strParameters ) )