Why is this not applied?
Would be nice to have when cross compiling works.
Hans Leidekker wrote:
Hi,
It appears that the comctl32 conformance test calls functions by name that are exported by ordinal only on Windows. Still the test runs (and thus run-time links) on Wine. Is this wanted behavior?
When I run it as a cross compiled test on my W2kSP4 machine or on Wine(!) it bombs with linking errors. To fix this I made this patch that uses GetProcAddress to get at the functions via their ordinals.
-Hans
Changelog: Don't call functions by name. They are exported by ordinal only.
Index: dlls/comctl32/tests/dpa.c
RCS file: /home/wine/wine/dlls/comctl32/tests/dpa.c,v retrieving revision 1.2 diff -u -r1.2 dpa.c --- dlls/comctl32/tests/dpa.c 5 Sep 2003 23:08:42 -0000 1.2 +++ dlls/comctl32/tests/dpa.c 19 Oct 2003 16:24:49 -0000 @@ -29,6 +29,9 @@
#include "wine/test.h"
+static HDPA (WINAPI *pDPA_Create)(INT)=NULL; +static INT (WINAPI *pDPA_Search)(HDPA,LPVOID,INT,PFNDPACOMPARE,LPARAM,UINT)=NULL;
static INT CALLBACK dpa_strcmp(LPVOID pvstr1, LPVOID pvstr2, LPARAM flags) { LPCSTR str1 = (LPCSTR)pvstr1; @@ -42,14 +45,18 @@ HDPA dpa_ret; INT int_ret; CHAR test_str0[]="test0";
- dpa_ret = DPA_Create(0);
- HMODULE hcomctl32=LoadLibraryA("comctl32.dll");
- pDPA_Create=(void*)GetProcAddress(hcomctl32, (LPSTR)328);
- pDPA_Search=(void*)GetProcAddress(hcomctl32, (LPSTR)339);
- dpa_ret = pDPA_Create(0); ok((dpa_ret !=0), "DPA_Create failed");
- int_ret = DPA_Search(dpa_ret,test_str0,0, dpa_strcmp,0, DPAS_SORTED);
- int_ret = pDPA_Search(dpa_ret,test_str0,0, dpa_strcmp,0, DPAS_SORTED); ok((int_ret == -1), "DPA_Search found invalid item");
- int_ret = DPA_Search(dpa_ret,test_str0,0, dpa_strcmp,0, DPAS_SORTED|DPAS_INSERTBEFORE);
- int_ret = pDPA_Search(dpa_ret,test_str0,0, dpa_strcmp,0, DPAS_SORTED|DPAS_INSERTBEFORE); ok((int_ret == 0), "DPA_Search proposed bad item");
- int_ret = DPA_Search(dpa_ret,test_str0,0, dpa_strcmp,0, DPAS_SORTED|DPAS_INSERTAFTER);
- int_ret = pDPA_Search(dpa_ret,test_str0,0, dpa_strcmp,0, DPAS_SORTED|DPAS_INSERTAFTER); ok((int_ret == 0), "DPA_Search proposed bad item");
}
On Mon, 27 Oct 2003, Jakob Eriksson wrote:
Why is this not applied?
Because the problem was with MinGW's import lib, not with Wine's comctl conformance test. I have submitted a patch to MinGW but it's not applied yet (it has generated quite a discussion over there by the way).
Would be nice to have when cross compiling works.
Exactly. I'm trying to get all conformance tests to build and run myself. Building is fine but for -luuid and -ldxguid for which Wine has no Makefile support yet. When that comctl patch get's into MinGW all tests will run too (on Win2k as well as on Wine itself).
-Hans
Hans Leidekker wrote:
On Mon, 27 Oct 2003, Jakob Eriksson wrote:
Why is this not applied?
Because the problem was with MinGW's import lib, not with Wine's comctl conformance test. I have submitted a patch to MinGW but it's not applied yet (it has generated quite a discussion over there by the way).
Ahh... sweet!
regards, Jakob