Jump to content
Larry Ullman's Book Forums

Passing A String From C++ To A C Dll


Recommended Posts

Hi,

 

I hope that this is not 'too simple' for anyone replying, but I'm a C novice so your advice will be most appreciated.

 

The background is that I'm trying to learn about DLLs and using them in a Windows 7 environment.

 

I have created a simple 'HelloWorld-ish' DLL in C which compiles OK.  It is meant to receive a string passed to it from a calling C++ program and display that string in a messagebox.

 

I am aware that strings are handled differently in C and C++.  I suspect that my 'caller' program is passing the string OK but that my C DLL is not handling it OK.  The DLL displays just the first character of the passed string.

 

Here's the code from the DLL - first the dll.h:

#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */

DLLIMPORT void HelloWorld (char *str_in);

#endif /* _DLL_H_ */

And the HelloWorld.c code:

#include "E:/documents/C_PlusPlus/HelloWorld_C/dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld (char *str_in)
{
    MessageBox (0, str_in, "Try 2", MB_ICONINFORMATION);
}

BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
    switch (reason)
    {
      case DLL_PROCESS_ATTACH:
        break;
      case DLL_PROCESS_DETACH:
        break;
      case DLL_THREAD_ATTACH:
        break;
      case DLL_THREAD_DETACH:
        break;
    }
    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}

My environment in this context is Windows 7 64 bit and Dev-C++

 

I have scoured the Internet and forums but I can't seem to find what I'm looking for.

 

Any advice will be most appreciated and thank you in anticipation.

 

Cheers

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...