[odb-users] Problem - Using ODB inside a DLL
Cuong Minh Tran
vaioinman at googlemail.com
Fri Jan 6 11:50:32 EST 2012
Hi Boris,
I have a small discover regarding my problem. If I just specify the project `test' in your sample project to link with odb.lib and odd-mysql.lib, the problem disappears.
Hope this helps.
Best regards,
Cuong
On 11 Dec 2011, at 19:59, Cuong Minh Tran wrote:
> Hi Boris,
>
> Great thanks to your reply. I will try your COM DLL project and communicate the progress.
>
> Nonetheless, looking back through the archives, I found my problem to be very much like this:
> http://www.codesynthesis.com/pipermail/odb-users/2011-June/000127.html
>
> But the archive does not seem to contain the solution.
>
> Best regards,
>
> Cuong
>
> On 11 Dec 2011, at 13:22, Boris Kolpackov wrote:
>
>> Hi Cuong,
>>
>> Cuong Minh Tran <vaioinman at googlemail.com> writes:
>>
>>> I am trying to use the set ODB - MYSQL/SQLite version 1.6 in my COM DLL,
>>> developed in MSVC 2010. I had no issues with compiling libodb,
>>> libodb-mysql/sqlite on the same machine with my COM. My COM code also
>>> compiles without a problem. However, I want to trigger the COM in my
>>> application, the execution always fails at the (*) line:
>>>
>>> ...
>>> // create database pointer
>>> std::auto_ptr<odb::database> db ( create_database ( ) );
>>> (*) odb::transaction t (db->begin ());
>>> //persist an simple object
>>
>> It is hard to say what's going on without knowing exactly how you
>> created your "COM DLL" and without seeing the create_database()
>> database implementation. One fairly common cause would be if ODB
>> is unable to connect to the database (which in this case will
>> happen during the db->begin () call) though you said that
>> everything works fine in plain Win32 setup so it is probably not
>> it.
>>
>> In any case, I went ahead and created a test "COM DLL" project as
>> described on this page:
>>
>> http://msdn.microsoft.com/en-us/library/dssw0ch4(v=VS.90).aspx
>>
>> I then added code similar to the above to the property's get_XXX()
>> function. However, everything is working fine for me. Could you try
>> this project and see if it works for you?
>>
>> http://www.codesynthesis.com/~boris/tmp/odb/com_dll.zip
>>
>> You will need to make some modifications in Object1.cpp to use
>> your MySQL connection parameters before you can run the test.
>>
>> If it works for you as well, then you can try to modify it to
>> resemble your code until it fails. Then I would be able to take
>> a look.
>>
>> Boris
>
More information about the odb-users
mailing list