After trying different VS 2015 Solution configurations (and abundant breakpointing), I have established that it is not the .EXE->.LIB->Cairo API call structure that is breaking Cairo surface rendering in my project.
The black test square can be rendered before, but not directly after, this D3D9 API call:Direct3DCreate9(D3D_SDK_N.B. The object parameters are as follows:VERSION)->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, WindowHandle, D3DCREATE_HARDWARE_ VERTEXPROCESSING, &PresentParameters, &PDevice); As a reminder, the code for rendering the black test square is as below, and the status of each Cairo API call returns "no error has occurred":WindowHandle 0x001b07f8 {unused=13111204 } HWND__ *unused 13111204 intPresentParameters {BackBufferWidth=0 BackBufferHeight=0 BackBufferFormat=D3DFMT_UNKNOWN (0) ...} _D3DPRESENT_PARAMETERS_ BackBufferWidth 0 unsigned intBackBufferHeight 0 unsigned intBackBufferFormat D3DFMT_UNKNOWN (0) _D3DFORMATBackBufferCount 1 unsigned intMultiSampleType D3DMULTISAMPLE_NONE (0) _D3DMULTISAMPLE_TYPEMultiSampleQuality 0 unsigned longSwapEffect D3DSWAPEFFECT_DISCARD (1) _D3DSWAPEFFECT+ hDeviceWindow 0x001b07f8 {unused=13111204 } HWND__ *Windowed 1 intEnableAutoDepthStencil 0 intAutoDepthStencilFormat D3DFMT_UNKNOWN (0) _D3DFORMATFlags 1 unsigned longFullScreen_RefreshRateInHz 0 unsigned intPresentationInterval 0 unsigned intPDevice 0x00000000 <NULL> IDirect3DDevice9 *+ IUnknown <struct at NULL> IUnknowncairo_t *cr;cairo_surface_t *surface;
cairo_status_t status;
surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 390, 60); status = cairo_surface_status(surface);
cr = cairo_create(surface);
status = cairo_status(cr);
cairo_set_source_rgba(cr, 0, 0, 0, 1);
status = cairo_status(cr);
cairo_rectangle(cr, 175, 10, 40, 40);
status = cairo_status(cr);
cairo_fill(cr);
status = cairo_status(cr);
cairo_surface_flush(surface);
status = cairo_surface_write_to_png(surface, "f:\\cairo_test_pos_lib_ member_function.png");
cairo_destroy(cr);cairo_surface_destroy(surface); Can anyone suggest how to proceed from here?Cheers,Jeff.On 27 January 2017 at 11:07, Jeffrey Sheen <jeffrey.sheen00@alumni.imperial.ac.uk > wrote:Thanks for taking a look Eric.The status value after all of the Cairo API calls are all "no error has occurred", in both the EXE implementation and LIB implementation, so no information there.I noticed this output during the execution of the EXE:Only the GTK+ DLL files are reported as missing symbols, where others have theirs loaded. Is it possible that the dynamic linkage is broken for API calls made from the static LIB because of this?'Loaded 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_ win32\bin\libcairo-2.dll'. Module was built without symbols. 'Loaded 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_ win32\bin\libfontconfig-1.dll' . Module was built without symbols. 'Loaded 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_ win32\bin\libexpat-1.dll'. Module was built without symbols. 'Loaded 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_ win32\bin\freetype6.dll'. Module was built without symbols. 'Loaded 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_ win32\bin\libpng14-14.dll'. Module was built without symbols. 'Loaded 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_ win32\bin\zlib1.dll'. Module was built without symbols. On 26 January 2017 at 18:47, <cecashon aol com> wrote:
Hi Jeffrey,
I am probably not much help here. Your code works on Ubuntu16.04 and GTK2.24.30. It does seem strange that there isn't an error popping up someplace. Have you tried getting the status of that function to see if it returns an error?
cairo_status_t status;
status=cairo_surface_write_to_png(surface, test_dir);
g_print("%s\n", cairo_status_to_string(status));
Maybe it might offer a clue to what is going on.
Eric