(私はWindowsを使用しています。)
コンパイルしたDLL(libsox)を次のように見えるCプログラムでテストしています。
#include <stdio.h>
#include "sox.h"
int main(void) {
char const * versionText = sox_version();
printf(versionText);
return 0;
}
DLLで定義されている関数には、次のプロトタイプがありますsox.h
(これには次のものが含まれていますcdecl
)。
LSX_RETURN_VALID_Z LSX_RETURN_PURE
char const *
LSX_API
sox_version(void);
問題は次のとおりです。でファイルをビルドしようとするとgcc -lsox -o test.exe test.c
、次のエラーが発生します。
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\ccSS2h2z.o:test.c:(.text+0xf): undefined reference to `sox_version'
collect2: ld returned 1 exit status
一言:MinGWのフォルダ-lsox
にライブラリファイル「libsox.dll.a」があります。lib
と書く-lsoxnonsense
と、ライブラリがないと書いてあります。つまり、示されているケースでは、ライブラリが見つかります。では、なぜリンクを作成したくないのでしょうか。