Hi Chris. I know that it is easy to fix the problem using C++. However, I do not want to code a wrapper DLL. I was wondering if there was a workaround with Python. Everything has to be done in Python as we do not have the tools for C++ (and we are not planning on getting any).
Thanks. Chris Mellon wrote: > <please don't top post> > > On 4 Oct 2006 11:35:11 -0700, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > Would you have any example of a wrapper for such data types? > > > > Thanks. > > > > Chris Mellon wrote: > > > On 4 Oct 2006 11:18:16 -0700, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > > > Hi all. > > > > > > > > I just started looking at Python's ctypes lib and I am having trouble > > > > using it for a function. > > > > > > > > For starters, here's my Python code: > > > > > > > > > > > > from ctypes import*; > > > > myStringDLL= cdll.LoadLibrary("myStringDLL.dll"); > > > > > > > > GetMyString = getattr(myStringDLL, > > > > "?GetMyString@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL > > > > PROTECTED]@2@@std@@@Z") > > > > > > > > strString = create_string_buffer('\000' * 256); > > > > GetMyString.restype = c_int; > > > > GetMyString.argtypes = [c_char_p]; > > > > > > > > bResult = GetMyString (strSerialNumber); > > > > > > > > print (bResult); > > > > print (strSerialNumber); > > > > > > > > #C++ Prototype of the function I want to call: > > > > #bool GetMyString (string& stringParam) ; > > > > > > > > > > > > > > > > > > > > I do not have access to the source code of this function so don't ask > > > > me to try different things in C++. This DLL is working fine. > > > > > > > > The problem that I have is that print (strSerialNumber) does not seem > > > > to print the correct string. What I get is some garbage value of > > > > unprintable characters. Am I using this the correct way? > > > > > > > > > > > > > > > > > > > This function is expecting a C++ std::string object, not a regular C > > > style string. You'll need a wrapper function, and one which uses the > > > same compiler and STL as the C++ source. > > > > > > > Thanks. > > > > > > > > -- > > > > http://mail.python.org/mailman/listinfo/python-list > > > > > > > > in this case it'd be very simple: > > bool WrapGetMyString(char * c) { > return GetMyString(c) > } > > > (Note: This isn't unicode safe). > > The C++ compiler will handle converting from the char * to the std::string. > > > > > > > -- > > http://mail.python.org/mailman/listinfo/python-list > > -- http://mail.python.org/mailman/listinfo/python-list