www.digitalmars.com         C & C++   DMDScript  

c++.windows - Problem with header-file

reply davidek <david_w freenet.de> writes:
Hi!

Im a newbie to C++ and have a problem compiling with the DMC.
I included a header-file (.h) into an very simple cpp-programm.

In this file is e.g. a line like this:

int WINAPI CasioIO_RespondToReceive(HCASIOIO handle, BYTE rows, BYTE columns,
double * values);

DMC reports errors cause of an missing "," and errors cause the "*", but the
code should be correct.
Have i to change the lines for DMC? Or is this header-file-line wrong?

greetings
davidek
Jan 15 2007
parent reply Bertel Brander <bertel post4.tele.dk> writes:
davidek skrev:
 Hi!
 
 Im a newbie to C++ and have a problem compiling with the DMC.
 I included a header-file (.h) into an very simple cpp-programm.
 
 In this file is e.g. a line like this:
 
 int WINAPI CasioIO_RespondToReceive(HCASIOIO handle, BYTE rows, BYTE columns,
 double * values);
 
 DMC reports errors cause of an missing "," and errors cause the "*", but the
 code should be correct.
 Have i to change the lines for DMC? Or is this header-file-line wrong?
Do you have a decleration of HCASIOIO? I don't think it is a standard one. -- Just another homepage: http://damb.dk But it's mine - Bertel
Jan 15 2007
parent reply davidek <david_w freenet.de> writes:
The complete Header-File, which was delivered with an CasioIO.dll, is the
following: (casioio.h)

#define HCASIOIO	int

#define IOTYPE_CFX		1

#define ERR_NOTSUPPORTED	2
#define ERR_COMMPORT		4

#define TYPE_VALUE		1
#define TYPE_MATRIX		2
#define TYPE_LIST		3


typedef void (*CASIOIO_EVENT)();

int WINAPI CasioIO_Uninit();
int WINAPI CasioIO_RespondToReceive(HCASIOIO handle, BYTE rows, BYTE columns,
double * values);
int WINAPI CasioIO_AfterReceive(HCASIOIO handle, BYTE * type, BYTE * name);
int WINAPI CasioIO_AfterSend(HCASIOIO handle, BYTE * type, BYTE * name, BYTE *
rows, BYTE * columns, double * values);
int WINAPI CasioIO_Init(BYTE comport, int iotype);
HCASIOIO WINAPI CasioIO_Open(int authorID, int productID, CASIOIO_EVENT
sendproc,
CASIOIO_EVENT receiveproc);
int WINAPI CasioIO_Close(HCASIOIO handle);
Jan 16 2007
parent reply Bertel Brander <bertel post4.tele.dk> writes:
davidek skrev:
 The complete Header-File, which was delivered with an CasioIO.dll, is the
 following: (casioio.h)
 
[snip code] Do you include windows.h before casioio.h ? If not, try it. Do you have a .lib file for the dll? -- Just another homepage: http://damb.dk But it's mine - Bertel
Jan 16 2007
parent reply davidek <david_w freenet.de> writes:
Yes, i included windows.h before casioio.h.

Yes, i have a .lib file too. (It was delivered with the .dll too.)


davidek
Jan 17 2007
parent reply Bertel Brander <bertel post4.tele.dk> writes:
davidek skrev:
 Yes, i included windows.h before casioio.h.
 
 Yes, i have a .lib file too. (It was delivered with the .dll too.)
Strange. I wrote this: #include <windows.h> #include "casioio.h" HCASIOIO Handle; void SendFunc() { } void RecvFunc() { double X[] = {1, 2}; CasioIO_RespondToReceive(Handle, 2, 3, X); } int main() { CasioIO_Init(1, 0); Handle = CasioIO_Open(123, 321, SendFunc, RecvFunc); } It compiles without problems. casioio.h is a file with the content you posted. Can you post a complete example that show the problem? Can I download casioio.h/.dll/.lib ? -- Just another homepage: http://damb.dk But it's mine - Bertel
Jan 17 2007
parent reply davidek <david_w freenet.de> writes:
Hi!

The background to my problem: I started to learn java-programming. Now i want to
call functions of this dll out of java. For that i use the JNI (Java Native
Interface), which allows to use DLLs in java.

I have to call the CasioIO.dll out of an new DLL, that i try to create
(Wrapper).
But i simply dont get the DLLs functions in the cpp-programm.

At he current state the Optlink reports "Error 42: Symbol Undefined" about the
CasioIO-methods.

Here is a link to the CasioIO-download:
http://users.pandora.be/gp/casio/casioio/casioio_sdk.zip

My files are in the attachment.

Greetings
davidek
begin 644 files.zip
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
2``````0`!`#[````1`<`````
`
end
Jan 18 2007
parent reply Bertel Brander <bertel post4.tele.dk> writes:
davidek skrev:
 Hi!
 
 The background to my problem: I started to learn java-programming. Now i want
to
 call functions of this dll out of java. For that i use the JNI (Java Native
 Interface), which allows to use DLLs in java.
 
 I have to call the CasioIO.dll out of an new DLL, that i try to create
(Wrapper).
 But i simply dont get the DLLs functions in the cpp-programm.
 
 At he current state the Optlink reports "Error 42: Symbol Undefined" about the
 CasioIO-methods.
You could do: #include <windows.h> #include <iostream> #include "../SDK/vc/casioio.h" #include "jni_test.h" //This includes the JNI. It is an header file created by a java-sdk-tool. typedef int WINAPI (*CasioIO_UninitPtrT)(); CasioIO_UninitPtrT CasioIO_UninitPtr; typedef int WINAPI (* CasioIO_InitPtrT)(BYTE comport, int iotype); CasioIO_InitPtrT CasioIO_InitPtr; JNIEXPORT jint JNICALL Java_jni_1test_Uninit(JNIEnv *env, jclass) { return CasioIO_UninitPtr(); } JNIEXPORT jint JNICALL Java_jni_1test_Init(JNIEnv *env, jclass cl, jshort comport, jint iotype) { return CasioIO_InitPtr(comport, iotype); } void InitPointers() { HINSTANCE Library = LoadLibrary("CasioIO.dll"); CasioIO_UninitPtr = (CasioIO_UninitPtrT )GetProcAddress(Library, "CasioIO_Uninit"); if(!CasioIO_UninitPtr) { std::cout << "Failed to find CasioIO_Uninit" << std::endl; } CasioIO_InitPtr = (CasioIO_InitPtrT )GetProcAddress(Library, "CasioIO_Init"); if(!CasioIO_InitPtr) { std::cout << "Failed to find CasioIO_Init" << std::endl; } } __declspec(dllexport) BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: InitPointers(); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } The above code compiles and creates a jni_test.DLL with this command line: dmc -I\j2sdk1.4.2_10\include -I\j2sdk1.4.2_10\include\win32 -mn -WD jni_test.cpp kernel32.lib You need to do something else than stc::cout << "..." in case of errors. -- Just another homepage: http://damb.dk But it's mine - Bertel
Jan 18 2007
parent reply davidek <david_w freenet.de> writes:
Hi!

Thank you very much! That solution works fine! I got an value back from the
DLL-Method to the Java-App!

Thanks for the answers you wrote and for the effort!

Greetings
davidek
Jan 19 2007
parent "Terrymarfy" <terry phototocanvasprint.co.uk> writes:
On Friday, 19 January 2007 at 15:25:15 UTC, davidek wrote:
 Hi!

 Thank you very much! That solution works fine! I got an value 
 back from the
 DLL-Method to the Java-App!

 Thanks for the answers you wrote and for the effort!

 Greetings
 davidek
Just simple runway, QUAA vs ANS no relation. that's fine. ----------------------------------- [url="http://www.tocanvas.net"]cheap canvas print[/url] | [url="http://www.tocanvas.net"]photos to canvas print[/url] | [url="http://www.tocanvas.net"]canvas from photo[/url] | [url="http://www.tocanvas.net"]photos in canvas[/url]
Nov 28 2012