การใช้งาน dll ภายนอก

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

คือผมจะเขียนโปรแกรมไปอ่านข้อมูลที่ถูก pack ข้อมูลไว้ โดยการจะ unpack ข้อมูลได้นั้น จะต้องใช้ library client access ของ ibm ตัวหนึ่งที่เป็น dll จะเป็นไปได้ไหมครับว่าเรา(python)จะเรียกใช้งาน ตัว dll ตัวนั้นมาใช้งานนะครับ เพราะผมเห็นใน .net เขาใช้งานได้ โดยเรียกตัว dll เข้ามาแล้วก็เรียกใช้งานฟังชั่นต่างๆ ใน dll ได้นะครับ

น่าจะใช้ ctypes library ได้นะครับ ผมเคยลองเขียนให้ call dll library ที่เขียนมาสำหรับ c++ ได้นะครับ แต่ไม่ได้เอามาใช้งานจริงจัง คุณ khao_lek ลองดูนะครับ

khao_lek's picture

ขอบคุณครับ ขอไปลองดูก่อนครับ

ถ้าเป็น C Interface ใช้ Ctypes ได้เลยครับ น่าจะง่ายที่สุดแล้ว

แต่ถ้าเป็น C++ นี่ผมเข้าใจว่าใช้ Ctype ไม่ได้นะครับ ทางที่ดีที่สุดน่าจะเป็น Boost.Python

khao_lek's picture

ตอนนี้ผมดึง dll เข้ามาได้แล้วครับแต่ผมงงกับการเรียกใช้งานฟังชั่น(หรือเปล่า ?)ใน dll ผมเลยเอาตัวอย่างใน .net มาให้ดูนะครับ ผมไม่รู้ว่าเรียกใช้อย่างไร vb.net ก็ไม่เคยเขียน ไม่เข้าใจ concept มันเลยคับ

Public Shared Function PackedDecimalStringToDouble(ByVal strPackedDecimal As String, ByVal Digits As Integer, ByVal DecimalPosition As Integer) As Double
        Const IBMEBCDICThaiCode As Integer = 20838
        Dim packedConverter As cwbx.PackedConverterClass
        Dim EBCDICEncoding As System.Text.Encoding
        Dim bytes() As Byte
        Try
            EBCDICEncoding = System.Text.Encoding.GetEncoding(IBMEBCDICThaiCode)
 
            bytes = EBCDICEncoding.GetBytes(strPackedDecimal)
 
            packedConverter = New cwbx.PackedConverter
            packedConverter.Digits = 11
            packedConverter.DecimalPosition = 2
 
            Return packedConverter.FromBytes(bytes)
        Catch ex As Exception
            Return Nothing
        End Try
    End Function
sugree's picture

ดูเหมือนว่าจะเป็น dll ของ .net ผมแนะนำให้ใช้ ironpython ซะเลย

khao_lek's picture

กำลังศึกษาเหมือนกันครับ

ครับ คิดว่า ironpython จะตรงสุด เท่าที่ลองค้น ๆ ดูนะครับ แต่ใช้ไม่เป็น ถ้าทำได้แล้ว ช่วยสอนด้วยนะครับ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น