Cygwin dlopen() 오류 ( Permission denied )

freedom의 이미지

안녕하세요.

Windows Server 2008 R2 에서

Cygwin 환경에서 프로그래밍을 하고 있습니다.

프로그램의 롤은 oralce 의 dll 파일을 열서 oci 를

함수포인터로 할당 , 로직을 수행하는 것 입니다.

문제는 dlopen() 에서 dll 파일을 열지 못합니다..
제가 윈도우에서 db client 를 해보는것은 처음인데

시도 했던 파일은 다음과 같습니다.
/app/....../product/11.1.0/client_t/oci/lib/msvc/vc8/oraocci11.dll
/app/....../product/11.1.0/client_t/oci/lib/msvc/vc8/oraocci11d.dll

등 이고

환경 변수에 다음과 같이 PATH 를 등록 했습니다.

export LD_LIBRARY_PATH=$ORACLE_HOME/oci/lib/msvc/vc8

여기서 dlopen() 시 어떤 파일이든 "Permission denied" 가 나옵니다.
이 메시지는 dlerror()로 받은 오류 메시지 입니다.

잘안되서 위 dll 파일을 바이너리 파일과 같은 위치에 복사해서

dlopen( "./oraocci11.dll" , RAZY.... ) 등과 같이 해봤는데도

같은 결과 이네요

파일의 권한은 777로 해 놓은 상태 입니다.

어디를 살펴봐야 할까요?... 제가 컴파일해서 만든 shared object 는 dlopen 이 잘되는데

dll 은 안되는군요..

hys545의 이미지

혹시 이 환경변수 설정이 잘못되었을수도 있음
--==================
그리고 한번 file $ORACLE_HOME/oci/lib/msvc/vc8/oraocci11.dll
해보아서 에러 안나는지 확인해보세여
============================
아! 그리고 cygwin안에서 사용하는 파일 경로가 windows에서 사용하는 경로하고 달라서일수도 있음

/app/....../product/11.1.0/client_t/oci/lib/msvc/vc8/oraocci11.dll
아마 이런경로로 설정했다면 cygwin용이 아닌 그냥 윈도우 프로그램에서는 dll을 못찾을수도 있음.
=====================
vc로 컴파일한 프로그램에서 에러난건지 아니면 cygwin으로 컴파일한 프로그램에서 에러난건지 궁금

즐린

즐린

freedom의 이미지

/hys545

네.. 제가 잘못 적었군요

윈도우상 경로는
C:\app\Administrator\product\11.1.0\client_1

Cygwin상 경로는
/cygdrive/c/app/Administrator/product/11.1.0/client_1

입니다. 아그리고 cygwin 상에서 .bash_profile 등에

ORACLE_HOME 을 정하면 sqlplus 등이 실행이 되지 않습니다.
오히려 unset 으로 ORACLE_HOME 을 풀어주면 작동이 됩니다.

따로 설정을 하지 않아도 윈도우의 환경변수를 가져온다고 해서
그 방법으로 되는구나 했는데 이것도 좀 이해가;;

일단 경로 말씀 하신것은 위에 썻듯이 문제가 없는 것은 확인 했습니다.

그리고 위에 제가 혹시 몰라서 ./.....dll 처럼 같이도 해봤구요
오류 메시지에서 No such file or directory 등의 메시지로
오류가 분류되는 것도 봤기 때문에 그 부분은 아닌것 같습니다.

그리고 cygwin 에서 만든 프로그램 입니다. 테스트 코드는 다음과 같습니다.

#include
#include

int main()
{
void* dl = NULL;

// oraocci11.dll
// oraocci11d.dll 으로 했습니다.
dl = dlopen( "./oci.dll" , RTLD_LAZY );
if( dl == NULL )
{
printf("dlopen : %s\n", dlerror() );
exit(0);
}
else
{
printf("success!!!\n" );
}

return 0;
}

Windows 는 64bit 입니다. Oracle 도 64bit 이구요..

이휴 어제이후로 발전이 없네요. hys545 님 답변 감사합니다.
좋은 하루 되세요~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.