Borland C++ 5.5.1 for Win32でPathIsDirectoryを使った時のエラー

このQ&Aのポイント
  • Borland C++ 5.5.1 for Win32でPathIsDirectoryを使用しようとすると、外部シンボル 'PathIsDirectoryA' が未解決というエラーが発生します。
  • エラーの原因は、ボーランドC++5.5のコンパイラがPathIsDirectory関数を見つけることができないためです。
  • このエラーを解決するには、ボーランドC++5.5のコンパイラで利用できる代替の関数を使用するか、他のコンパイラに切り替える必要があります。
回答を見る
  • ベストアンサー

PathIsDirectoryを使って

#include <windows.h> #include <stdio.h> //#include <Dbghelp.h> #include <shlwapi.h> void main(void) { char *Path = "c:\\windows\\system32\\"; if(PathIsDirectory(Path)) printf("'%s'は正しいディレクトリである。\n",Path); else printf("'%s'は正しいディレクトリでない。\n",Path); } をボーランドC++5.5でコンパイルすると Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.cpp: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'PathIsDirectoryA' が未解決(C:\BORLAND\test.OBJ が参照) というエラーがでました。 どうしたらいいのでしょうか?

  • keyguy
  • お礼率68% (895/1314)

質問者が選んだベストアンサー

  • ベストアンサー
  • darksky
  • ベストアンサー率66% (38/57)
回答No.1

リンク時のエラーのようなので、shlwapi.libをリンクに含まればいいように思います。 Borland C++は持っていないので動作確認できまんので間違いかも・・・ shlwapi.hは、Borland C++に含まれているんですか?

keyguy
質問者

お礼

ありがとうございます。 こんどはshlwapi.libをリンクすればうまくいきました。 shlwapi.libはボーランドにありました。 ボーランドではlibファイルをリンクしなくてもいいものが多い中リンクしないといけないものもボーランドといえども有るようですね。

関連するQ&A

  • dlopenで目的の*.soファイルをロードできません

    以下C++のテストソース2ファイルをコンパイルし実行したのですが、libtest.soをロードすることが出来ません。OSはRed Hat Linux EL4.0WS、カーネルは2.6.9-5です。原因と思しき点がお分かりの方がいれば、教えて頂けますでしょうか。 ********** ソースファイル1(libtest.cpp) ********** #include <stdio.h> #include <stdlib.h> extern "C" {void printTest();} void printTest(){ printf(" *** SUCCESS!! *** Java - Native Interface test at INOAC\n"); } ********** ソースファイル2(test.cpp) ********** #include <dlfcn.h> #include <stdio.h> #include <stdlib.h> static void (*testFunc)(); int main(){ void *library; const char * error; library = dlopen("libtest.so",RTLD_LAZY); if(library==NULL){ printf("Could not open libtest.so\n"); exit(1); } dlerror(); testFunc = (void (*)())dlsym(library,"printTest"); error = dlerror(); if(error){ printf("Could not find the function printTest\n"); exit(1); } printf("Test from C;\n"); (*testFunc)(); dlclose(library); return 0; } ********** 実行方法 ********** pgCC -fPIC -shared libtest.cpp -o libtest.so pgCC -ldl test.cpp -o test.exe setenv LD_LIBRARY_PATH "." ./test.exe

  • c++ , template , ファイル分割 , 助けてください...

    //-----------------coord.h------------- template <class type> class coord { type v[3]; public: coord(void); void Show(void); }; //-----------------main.cpp------------ #include<iostream> #include"coord.h" using namespace std; int main(void) { coord<double> ob; ob.Show(); return 0; } //----------------------coord.cpp----------- #include<iostream> #include"coord.h" using namespace std; template <class type> coord<type>::coord(void) { v[0]=v[1]=v[2]=0; } template <class type> void coord<type>::Show(void) { cout << "hello" << endl; } 同一フォルダ内に上記のファイルが 3 つあります. つまり上の 3 つのファイルを分割してコンパイルさせたいです. この状態で...MS-DOSプロンプトからコンパイルします. C:\test>bcc32 -c coord.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland coord.cpp: C:\test>bcc32 -c main.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland main.cpp: C:\test>bcc32 -emain main.obj coord.obj Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'coord<double>::coord<double>()' が未解決(C:\USERS\TAITO\PR OG\CPP\TEST\MAIN.OBJ が参照) Error: 外部シンボル 'coord<double>::Show()' が未解決(C:\USERS\TAITO\PROG\CPP\TE ST\MAIN.OBJ が参照) すると, このようなエラー文が出てしまい 実行可能ファイルができません. コンパイラはbccです. 原因が全く分かりません. 助けてください... ちなみに, 分割せずにコンパイルすると通ります. 自分は c 言語での分割コンパイル経験はあるので それをそのまま c++ 言語でも用いているのですが, 何か変えなければならないのでしょうか?

  • Borland C++ Compiler で winbase.h を使えないのですが・・・

    Borland C++ Compiler を使っているのですが,winbase.h 自体が使用できません。 次のようなプログラムでもコンパイルが通りません。 #include <winbase.h> int main(void){ return 0; } エラーは以下の通りです。 *** コンパイル開始 *** Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland ########.c: エラー E2139 C:\borland\bcc55\Include\winbase.h 227: 宣言に ; がない エラー E2238 C:\borland\bcc55\Include\winbase.h 228: 'ULONG_PTR' の宣言が複数見つかった エラー E2344 C:\borland\bcc55\Include\winbase.h 227: 一つ前の 'ULONG_PTR' の定義位置 (中略) エラー E2228 C:\borland\bcc55\Include\winbase.h 263: エラーあるいは警告が多すぎる *** 26 errors in Compile *** *** コンパイル終了 *** どうすればよいでしょうか? 何かちょっとした情報でもお願いします。

  • C言語、度々申し訳ございません。エラーです。

    いつも大変お世話になり誠にありがとうございます。 標記の件。 コードとコンパイルエラーを書きます。 度々すいません。 どうしたらいいでしょうか? ご回答の程宜しくお願い申し上げます。            高橋耕造 1.コード #include <studio.h> int main(void) { printf("%d\n",123); printf("\\100もらった\n"); printf("またあした\n"); return 0; } 2.コンパイルエラー C:\MinGW>gcc test2.c -o test2 test2.c:1:20: fatal error: studio.h: No such file or directory #include <studio.h> ^ compilation terminated. 検索しましたが解りません。 ご回答の程宜しくお願い申し上げます。

  • borlandについて

    こんばんは Borland C++ Compiler 5.5 を使っているのですが… _______________ |#include <stdio.h>      |←のようなプログラムをコンパイル |               | したら |int main(void) |1:インクルードファイル'stdio.h'を |{              | オープン出来ない | printf("Hello.\n");   |5:プロントタイプ宣言のない関数 | return 0;        | 'printf'の呼び出し(関数mein) |}              |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ と出てきますどうしたらよいでしょうか。

  • NULL領域を読み書きするの意味が?

    C言語の初学者です。 コンパイラは、Borland C++ 5.5.1 for Win32 を使っています。 たまたま見つけた C magazine プログラミングの禁じ手Web版 C言語編で、「NULL領域を読み書きする」という個所があり、下記ソースで発覚すると掲載されていました。 (http://www.cmagazine.jp/src/kinjite/c/null.html#index5) void f() { static char *theTxt; strcpy(theTxt,"TEST\n"); printf("%s",theTxt); } 自分の環境で、下記のソースで動かしてみたところ、アプリケーションエラーになりました。 #include <stdio.h> #include <string.h> int main(void) { static char *theTxt; /* (1) */ strcpy(theTxt,"TEST\n"); printf("%s",theTxt); return 0; } この禁じ手の意味そのものが、全く理解できませんでした。 ・NULL領域というのは、(1)のstatic定義されたポインタことをさしているのか? ・(1)の static をつけないで実行すると、正常終了したので、static の領域に書き込んではいけないのか? (そんなことはないと思うのだが)

  • condefs.hはどこにあるの?

    #include <stdio.h> #include <windows.h> #ifdef __BORLANDC__ #include <condefs.h> #endif をヘッダに含むプログラムspitest.cppを無償コンパイラのボーランドC++5.5でコンパイルすると Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland spitest.cpp: エラー E2209 spitest.cpp 8: インクルードファイル 'condefs.h' をオープンできない *** 1 errors in Compile *** とエラーがでました。 どうしたらいいのでしょうか?

  • C言語プログラミングの文字列を出力するプログラムについて

    ちょっとお聞きしたいのですが、 #include<stdio.h> void main(void) { printf("Hello World\n"); } と書いてコンパイルしたら インクルードファイル ’stdio.h’をオープンできない って出て Hello Worldってでない、、、 ちゃんとBorlandもダウンロードしたしcd設定もしたんだけど、 何が悪いのかわかりません。

  • コンパイル時のエラーについて>エラー E2209 警告 W8065?

    以前にも似たような質問がでていましたが・・・ 初心者なのですが下記のようにエラーによりコンパイル出来ません。 どなたか原因のわかる方いましたらいお教え下さい。 宜しくお願いします。  C:\source>bcc32 sample1.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland sample1.c: エラー E2209 sample1.c 1: インクルードファイル 'stdio.h' をオープンできない 警告 W8065 sample1.c 4: プロトタイプ宣言のない関数 'printf' の呼び出し(関数 main) *** 1 errors in compile *** もちろんbinディレクトリに bcc32.cfg【-I"c:\Borland\Bcc55\Include" -L"c:\Borland\Bcc55\Lib"】 と ilink32.cfg【-L"c:\Borland\Bcc55\lib"】 は入れてあります。 なんでできないんでしょかTT

  • ヘロンの公式を作ったプルグラムなのですが、プログラムの間違いを教えてください。

    プログラムの間違いを教えてください ヘロンの公式を作ったプログラムなんですが・・・ #include <stdio.h> #include <math.h> void main(void) { float a,b,c,s,x; printf("三角形の三辺の長さを入れてください\n"); printf("a="); scanf("%f",&a); printf("b="); scanf("%f",&b); printf("c="); scanf("%f",&c); s=(a+b+c)/2; x= sqrt(s*(s-a)*(s-b)*(s-c)); printf("\n%f",x); }

専門家に質問してみよう