<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>clrinterop Forum Rss Feed</title><link>http://www.codeplex.com/clrinterop/Thread/List.aspx</link><description>clrinterop Forum Rss Description</description><item><title>New Post: How to convert multi-dimension array?</title><link>http://clrinterop.codeplex.com/discussions/431516</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Once when I converted one unmanaged structure which contains multi-dimension array,I got one-dimension  in the managed side.&lt;br /&gt;
Question:Why couldn't I get  multi-dimension managed array as I expect?&lt;/p&gt;
&lt;/div&gt;</description><author>edmond_manningham</author><pubDate>Thu, 31 Jan 2013 08:42:24 GMT</pubDate><guid isPermaLink="false">New Post: How to convert multi-dimension array? 20130131084224A</guid></item><item><title>New Post: How to use action ConvertTo to convert TLB parameter into managed type IntPtr?</title><link>http://clrinterop.codeplex.com/discussions/67614</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;What about this issue? 2 yeras passed :( Current feature is important for me. Any chances that tlbimp2 will support this?&lt;/p&gt;&lt;/div&gt;</description><author>BlackGad</author><pubDate>Mon, 15 Aug 2011 08:51:40 GMT</pubDate><guid isPermaLink="false">New Post: How to use action ConvertTo to convert TLB parameter into managed type IntPtr? 20110815085140A</guid></item><item><title>New Post: Error processing post typedef types</title><link>http://clrinterop.codeplex.com/discussions/258965</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;In my header file I have definitions like&lt;/p&gt;
&lt;pre style="font-family:Consolas; background:white; color:black; font-size:13px"&gt;&lt;span style="color:green"&gt;/*Location&amp;nbsp;connection&amp;nbsp;handle&amp;nbsp;*/&lt;/span&gt;
&lt;span style="color:blue"&gt;typedef&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue"&gt;void&lt;/span&gt;&amp;nbsp;*tLocConn;&lt;/pre&gt;
&lt;pre style="font-family:Consolas; background:white; color:black; font-size:13px"&gt;Which result in the error&lt;/pre&gt;
&lt;pre style="font-family:Consolas; background:white; color:black; font-size:13px"&gt;Error: Error processing post typedef types for BOOL: Expected token of type ParenClose but found Asterisk instead.&lt;/pre&gt;
&lt;pre style="font-family:Consolas; background:white; color:black; font-size:13px"&gt;The generated NativeMethods.vb file only contains enums from the header file and no dllimports for functions.&lt;/pre&gt;
&lt;pre style="font-family:Consolas; background:white; color:black; font-size:13px"&gt;The command line I am using is:&lt;/pre&gt;
&lt;pre style="font-family:Consolas; background:white; color:black; font-size:13px"&gt;C:\Program Files\InteropSignatureToolkit&amp;gt;sigimp /includePath:&amp;quot;C:\Code\Shared Projects\vs2010\VstCalcTax\source&amp;quot; vst.h&lt;/pre&gt;
&lt;pre style="font-family:Consolas; background:white; color:black; font-size:13px"&gt;Am I doing something wrong?&lt;/pre&gt;
&lt;/div&gt;</description><author>rcollette</author><pubDate>Wed, 25 May 2011 14:47:00 GMT</pubDate><guid isPermaLink="false">New Post: Error processing post typedef types 20110525024700P</guid></item><item><title>New Post: tlbimp2 setting file version?</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=208832</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;these were simple changes to make.&lt;/p&gt;
&lt;p&gt;we added the m_strFileVersion member to the TlbImpOptions&amp;nbsp;class, just implemented it to use the same File Version number from the source file:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We made modifications to the ParseArguments function in tlbimp.cs:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // if the fileversion wasn't given, use the version number of the input file&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (Options.m_strFileVersion == null)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// get the fileversion&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(Options.m_strTypeLibName);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Options.m_strFileVersion = versionInfo.FileVersion;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;We also modified the DoImport function in tlbimpcode.cs to pass the file version string, and generate the new attribute:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!String.IsNullOrEmpty(strFileVersion))&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CustomAttributeBuilder wb = new CustomAttributeBuilder(typeof(System.Reflection.AssemblyFileVersionAttribute).GetConstructor(new Type[] { typeof(string) }), new object[] { strFileVersion });&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AsmBldr.SetCustomAttribute(wb);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;the same could be done for the product number, and i guess you could implement it to accept a value on the command line. this was beyond what we needed to do, so we didn't!&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Tim.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>tjohnson</author><pubDate>Tue, 08 Feb 2011 16:03:18 GMT</pubDate><guid isPermaLink="false">New Post: tlbimp2 setting file version? 20110208040318P</guid></item><item><title>New Post: tlbimp2 setting file version?</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=208832</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I would also like this for the reasons outlined above - it makes it very hard to patch these dlls without the ability to set the file version. At the moment we use tlbimp, then our own custom tool for updating the file version, and then we have to resign
 the dll again, it's a bit of a laborious process. In lieu of this not being a feature in tlbimp2, has anyone already made the modification to allow this? Perhaps you could share the code to prevent us repeating your work?&lt;/p&gt;
&lt;p&gt;Stu&lt;/p&gt;
&lt;/div&gt;</description><author>stuartjsmith</author><pubDate>Tue, 08 Feb 2011 13:04:12 GMT</pubDate><guid isPermaLink="false">New Post: tlbimp2 setting file version? 20110208010412P</guid></item><item><title>New Post: About the ComImport attribute</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=240797</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I find that I can't add this attribute on the interface using the following code:&lt;/p&gt;
&lt;p&gt;&amp;lt;Rule Name=&amp;quot;Rule #1&amp;quot; Category=&amp;quot;Type&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;Condition&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;And&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;NativeName Operator=&amp;quot;Equal&amp;quot; Value=&amp;quot;IEditingEngine&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/And&amp;gt;&amp;nbsp;&amp;nbsp;
 &amp;nbsp;&amp;lt;/Condition&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;Action Name=&amp;quot;AddAttribute&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Parameter Key=&amp;quot;AssemblyName&amp;quot; Value=&amp;quot;mscorlib&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Parameter Key=&amp;quot;TypeName&amp;quot; Value=&amp;quot;System.Runtime.InteropServices.ComImportAttribute&amp;quot;
 /&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Parameter Key=&amp;quot;Constructor&amp;quot; Value=&amp;quot;Void .ctor()&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Parameter Key=&amp;quot;Data&amp;quot; Value=&amp;quot;01 00 00 00&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/Action&amp;gt;&amp;nbsp;&amp;nbsp;&amp;lt;/Rule&amp;gt;&lt;/p&gt;
&lt;p&gt;Is it right?&lt;/p&gt;
&lt;/div&gt;</description><author>Tony2008</author><pubDate>Fri, 07 Jan 2011 06:31:49 GMT</pubDate><guid isPermaLink="false">New Post: About the ComImport attribute 20110107063149A</guid></item><item><title>New Post: Will this fix my problem</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=222197</link><description>&lt;div style="line-height: normal;"&gt;&lt;pre&gt;Hello,&lt;/pre&gt;
&lt;p&gt;I have discovered an issue when a .NET class is exposed to com and assesed using VBScript - in short the following is the issue (VbScript code)&lt;/p&gt;
&lt;div style="color:black;background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;Dim&lt;/span&gt; Its&lt;/pre&gt;
&lt;pre&gt;Dim Application&lt;/pre&gt;
&lt;pre&gt;Set Application = CreateObject(&amp;quot;dotNetCode.ApplicationClass&amp;quot;)
&lt;span style="color:blue"&gt;Set&lt;/span&gt; Its = Application.Items
MsgBox Its(1).name
&lt;span style="color:green"&gt;'The Following also works&lt;/span&gt;
MsgBox Application.Items.Item(1).Name
&lt;span style="color:green"&gt;'And so does&lt;/span&gt;
MsgBox Application.Items()(1).Name
&lt;span style="color:green"&gt;'But this does not work&lt;/span&gt;
MsgBox Application.Items(1).Name
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;More information on the exact issue can be found here - &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/vbinterop/thread/4b68da54-1e24-4461-b6c1-ceb16978eed4"&gt;http://social.msdn.microsoft.com/Forums/en-US/vbinterop/thread/4b68da54-1e24-4461-b6c1-ceb16978eed4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I believe that the implementation of iDispatch::Invoke is not entirely correct within .NET&amp;nbsp;and does not follow all the rules that say VB6 followed&amp;nbsp;- does this project provide the possibility to change the behavior of iDispatch::Invoke to fix this issue???&lt;/p&gt;
&lt;p&gt;The specific rules that need to be followed are:&lt;/p&gt;
&lt;p&gt;The rule for implementers of IDispatch::Invoke is if all of the following are true:&lt;br&gt;&amp;bull;the caller invokes a property &lt;br&gt;&amp;bull;the caller passes an argument list &lt;br&gt;&amp;bull;the property does not actually take an argument list &lt;br&gt;&amp;bull;that property returns an object &lt;br&gt;&amp;bull;that object has a default property &lt;br&gt;&amp;bull;that default property takes an argument list&lt;br&gt;then invoke the default property with the argument list.&lt;/p&gt;
&lt;p&gt;Thanks very much for your help.&lt;/p&gt;
&lt;p&gt;Matthew&lt;/p&gt;&lt;/div&gt;</description><author>matvdl</author><pubDate>Mon, 02 Aug 2010 16:56:43 GMT</pubDate><guid isPermaLink="false">New Post: Will this fix my problem 20100802045643P</guid></item><item><title>New Post: Marshall [out] arrays?</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=211210</link><description>&lt;div style="line-height: normal;"&gt;I'm trying to import an interface with conformant C-Style Arrays:

interface ITest: IUnknown
{
  HRESULT setBuf([in] long size, [in, size_is(size)] byte* buf);
  HRESULT getBuf([out] long* size, [out, size_is(, *size)] byte** buf);
}

There is no problem with setBuf(), I've created  ConvertTo() action for tlbimp2

    &amp;lt;Action Name=&amp;quot;ConvertTo&amp;quot;&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;Direction&amp;quot; Value=&amp;quot;[In]&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;ByRef&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;ManagedType&amp;quot; Value=&amp;quot;LPArray&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;MarshalAs&amp;quot; Value=&amp;quot;(default)&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;Attributes&amp;quot; Value=&amp;quot;[SizeParamIndexOffset=-1]&amp;quot; /&amp;gt;
    &amp;lt;/Action&amp;gt;

and it's marshalled as

public virtual extern void setBuf(int size, byte[] buf);

(I would like to get rid of size but can live with such signature). But how to handle getBuf()? Direct

    &amp;lt;Action Name=&amp;quot;ConvertTo&amp;quot;&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;Direction&amp;quot; Value=&amp;quot;[Out]&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;ByRef&amp;quot; Value=&amp;quot;True&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;ManagedType&amp;quot; Value=&amp;quot;LPArray&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;MarshalAs&amp;quot; Value=&amp;quot;(default)&amp;quot; /&amp;gt;
      &amp;lt;Parameter Key=&amp;quot;Attributes&amp;quot; Value=&amp;quot;[SizeParamIndexOffset=-1]&amp;quot; /&amp;gt;
    &amp;lt;/Action&amp;gt;

gives

public virtual extern void getBuf(out int size, out IntPtr[] buf);

while I need

public virtual extern void getBuf(out int size, out byte[] buf);

Any idea?

 

 










&lt;/div&gt;</description><author>dstr</author><pubDate>Sat, 01 May 2010 10:53:02 GMT</pubDate><guid isPermaLink="false">New Post: Marshall [out] arrays? 20100501105302A</guid></item><item><title>New Post: Why does typedef alias to BSTR become StringBuilder?</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=211003</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I've noticed that if I have a COM interface declaring an out parameter such as&lt;/p&gt;
&lt;p&gt;HRESULT MyMethod([out] BSTR *outVal);&lt;/p&gt;
&lt;p&gt;The interop contains an &amp;quot;out string outVal&amp;quot; as expected;&lt;/p&gt;
&lt;p&gt;int MyMethod(out string outVal);&lt;/p&gt;
&lt;p&gt;But if I have:&lt;/p&gt;
&lt;p&gt;typedef BSTR MyStringType;&lt;/p&gt;
&lt;p&gt;HRESULT MyMethod([out] MyStringType *outVal);&lt;/p&gt;
&lt;p&gt;The interop becomes:&lt;/p&gt;
&lt;p&gt;int MyMethod(StringBuilder outVal);&lt;/p&gt;
&lt;p&gt;Is this behavior really correct? I would expect an &amp;quot;out string&amp;quot; as usual.&lt;/p&gt;
&lt;p&gt;Adding the following line below line 536 of TypeConverter.cs in the released source code seems to fix the problem:&lt;/p&gt;
&lt;p&gt;m_nativeIndirections += builtinType.m_nativeIndirections;&lt;/p&gt;
&lt;p&gt;Any thoughts on this?&lt;/p&gt;
&lt;p&gt;Regards, Peter.&lt;/p&gt;&lt;/div&gt;</description><author>decaf</author><pubDate>Thu, 29 Apr 2010 13:12:50 GMT</pubDate><guid isPermaLink="false">New Post: Why does typedef alias to BSTR become StringBuilder? 20100429011250P</guid></item><item><title>New Post: tlbimp2 setting file version?</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=208832</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Is there a reason that tlbimp2 is cannot set the file version to a different value to the assembly version of the generated interop assembly?&lt;/p&gt;
&lt;p&gt;We have a situation where we need to re-build our interop but keep the assembly version the same (to keep compatibility with other assemblies which are using un-changed interfaces).&amp;nbsp; unfortunately, msi patches don't seem to update the file as it relies on the file version to determine if the file should be patched... i can change the code of tlbimp2 to do set this, however i was wondering if there is a reason that this version cannot currently be set?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>tjohnson</author><pubDate>Fri, 09 Apr 2010 13:10:48 GMT</pubDate><guid isPermaLink="false">New Post: tlbimp2 setting file version? 20100409011048P</guid></item><item><title>New Post: managed library binary compatible with COM DLL</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=82651</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hey guys, I am trying to build a managed library to be &amp;quot;binary compatible&amp;quot; with a VB6 COM DLL ... This DLL is part of a boxed software product, and they provide a VB6 project for you to put your code in ... Although I have done this in the past, I want to see if I can build out a managed DLL that will be &amp;quot;binary compatible&amp;quot;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;anyone over there have experiance with this?&lt;/p&gt;&lt;/div&gt;</description><author>tmusico</author><pubDate>Sun, 31 Jan 2010 22:40:47 GMT</pubDate><guid isPermaLink="false">New Post: managed library binary compatible with COM DLL 20100131104047P</guid></item><item><title>New Post: Computer troubleshooting</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=82599</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I all, &lt;br&gt;I have a problem on my Windows Vista that began afetr the purchase of an external Hard Disk Freecom. &lt;br&gt;A few days afetr the purchase I disconnected it while it was writing and, since that moment, every time I connect and disconnect it, the PC go to freeze mode for 5 minutes. &lt;br&gt;The same thing happen even if the hard disk is disconnected: every time I start windows it go to freeze a little after the password, and every time I connect and disconnect a usb device. &lt;br&gt;I have looked for the solution everywhere, updated windows, unistalled and installed the hard disk from the device manager but I solved the problem only when I restored a recent backup. &lt;br&gt;Yesterday the Hard disk was writing a backup while Vista was installing the updates; at the end of the proceure windows restarted automatically and the problem began again!!! &lt;br&gt;The Pc go to freeze when it starts, every time I connect or disconnect the hard disk, an usb earphone that has always worked switch on but there is no audio and I don't know how many others usb devices will have problems. &lt;br&gt;Has anyone an idea to solve this problem before I throw out of the window Vista or the the hard disk? &lt;br&gt;Thank you &lt;br&gt;&lt;br&gt; __________________&lt;br&gt; Never seen &lt;a href="http://www.giftideashop.net/"&gt;gift ideas&lt;/a&gt; like these! (&lt;a href="http://www.geschenk-ideen.biz/"&gt;geschenkideen&lt;/a&gt; on german or &lt;a href="http://www.regalos-originales.biz/"&gt;regalos originales&lt;/a&gt; on espanol), &lt;a href="http://www.fotomatrimonio.biz/album-matrimonio.html"&gt;album foto matrimonio&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><author>Pammachio</author><pubDate>Sun, 31 Jan 2010 15:07:27 GMT</pubDate><guid isPermaLink="false">New Post: Computer troubleshooting 20100131030727P</guid></item><item><title>New Post: Problem with ClassInterfaceType.None</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=79705</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I am having a problem with this piece of code. I can call the GetConnectionRawData method from unmanaged code (Powerbuilder), but when I try to reference the properties of ConnectionData I get errors. But If I get rid of &amp;quot;[ClassInterface(ClassInterfaceType.None)]&amp;quot; I have no problem accessing the properties of ConnectionData. Is there a dll conflict? Are the attributes used properly?&amp;nbsp;Any help will be greatly appreciated.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ComVisible(true)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ClassInterface(ClassInterfaceType.None)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Guid(&amp;quot;1B09A9E8-480F-4b4b-95F5-2CD6586B44A7&amp;quot;)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class DBConfigProxyFacade : IDBConfigProxy, IDisposable&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ComVisible(true)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [return: MarshalAs(UnmanagedType.LPArray)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ConnectionData[] GetConnectionRawData(ConnectionType i_connectionType)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConnectionData[] connectionData = _internalWeb.GetConnectionRawData(i_connectionType);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return connectionData;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage = string.Format(&amp;quot;Failed to get All Connection data from Configuration Service. Attempting top get from File. {0}&amp;quot;, ex.Message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new ConnectionData[] {};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;</description><author>olarich</author><pubDate>Mon, 04 Jan 2010 17:34:23 GMT</pubDate><guid isPermaLink="false">New Post: Problem with ClassInterfaceType.None 20100104053423P</guid></item><item><title>New Post: COM Control Debug Configuration Issue</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=75045</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Nevermind - got it working....&lt;/p&gt;&lt;/div&gt;</description><author>markdart</author><pubDate>Wed, 18 Nov 2009 15:50:49 GMT</pubDate><guid isPermaLink="false">New Post: COM Control Debug Configuration Issue 20091118035049P</guid></item><item><title>New Post: COM Control Debug Configuration Issue</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=75045</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I have a follow up post related to the product I mentioned below in another post.&amp;nbsp; I am not sure if it is applicable to this forum but I thought I would give it a try.&amp;nbsp; The COM server control is an ocx written in c++ that also utilizes an activex wrapper. &amp;nbsp;It is built as a native, MFC shared dll.&amp;nbsp; I have the source.&amp;nbsp; I am now able to build and register the ocx.&amp;nbsp; My VB app works with it as well but here is the issue:&amp;nbsp; The control works great when built with release configuration.&amp;nbsp; However, when built in debug configuration it does not work.&amp;nbsp; In debug, I can create an instance of the object.&amp;nbsp; I can see all the events, properties and methods.&amp;nbsp; The types are correct for the properties but almost all the property values state, &amp;ldquo;&amp;quot;Property Evaluation Failed&amp;quot;.&amp;nbsp; It seems as if they are not getting initialized when the instance gets created.&amp;nbsp; I have been over all the build parameters to compare/change as much as possible to the release configuration to try to get the debug configuration working but no luck.&amp;nbsp; I can break and step through in VS 2008 Pro and browse values successfully.&amp;nbsp; I can provide more info if necessary but I want to make sure this is applicable to the forum.&amp;nbsp; Thanks for any assistance or ideas.&lt;/p&gt;&lt;/div&gt;</description><author>markdart</author><pubDate>Fri, 13 Nov 2009 16:23:33 GMT</pubDate><guid isPermaLink="false">New Post: COM Control Debug Configuration Issue 20091113042333P</guid></item><item><title>New Post: DLL_PROCESS_ATTACH and DLL_PROCESS_DETACH from .NET</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=74989</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;We're using a c++ native dll in a C# .NET application. The native dll logs the DllMain DLL_PROCESS_ATTACH and DLL_PROCESS_DETACH call into a file. During some time the .NET application runns, we find a lot if&amp;nbsp; DLL_PROCESS_DETACH and DLL_PROCESS_ATTACH log entries with a time gap between 3s and 30s.&lt;/p&gt;
&lt;p&gt;What happens here?&lt;/p&gt;
&lt;p&gt;In my opinion, if a dll is once loaded into .NET domain, it cannot be unloaded!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>Avalon127</author><pubDate>Fri, 13 Nov 2009 08:52:17 GMT</pubDate><guid isPermaLink="false">New Post: DLL_PROCESS_ATTACH and DLL_PROCESS_DETACH from .NET 20091113085217A</guid></item><item><title>New Post: TlbImp2: Why are TypeLibs generated from .NET Dlls blocked?</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=74045</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;The Application I'm currently working on is basically a .NET Application acting as an COM EXE-Server (localserver32) which exposes its Object Model and an ActiveX-Control to COM. The Exe is written in ATL and implements the Application Class of the Object Model (The Exe don't really do much, it is basically a loader for the much larger .NET part). The rest of the Object Model is implemented in a seperate c# DLL which is COM-Visible and its TypeLib is generated by tlbexp (and registered together with the Exe, not with regasm).&lt;/p&gt;
&lt;p&gt;Everything works fine in Access or VB6, but tlbimp.exe and TlbImp2.exe don't allow the creation of interop DLLs from a TypeLibs generated from a c# DLLs. So the Object Model could not be used in an .NET App.&lt;/p&gt;
&lt;p&gt;It doesn't make sense to use a TypeLib from a .NET DLL in an in-process scenario, but in an out-of-process scenario it is the only way.&lt;/p&gt;
&lt;p&gt;Is there an other way to solve this problem?&lt;/p&gt;&lt;/div&gt;</description><author>alexander_werner</author><pubDate>Wed, 04 Nov 2009 14:27:08 GMT</pubDate><guid isPermaLink="false">New Post: TlbImp2: Why are TypeLibs generated from .NET Dlls blocked? 20091104022708P</guid></item><item><title>New Post: OCX Port</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=72132</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;&lt;br&gt;Thanks for your reply.&amp;nbsp; I went back over the repro steps from the beginning to verify my previous results and strangely enough was able to successfully register the .ocx and generate the activex wrapper.&amp;nbsp; The only difference in both test regressions was that I did a VS2008 update between the 2 test regressions.&amp;nbsp; It looks like now I have a c++ debug issue to figure out.&amp;nbsp; I can now see the registration with OLEView.&amp;nbsp; I have included the steps from the beginning below:&lt;/p&gt;
&lt;p&gt;The original c++ code was developed using the Microsoft compiler 6.0.&amp;nbsp; Here are the original build settings:&lt;/p&gt;
&lt;p&gt;Win32 ANSI Debug Tab C/C++:&lt;br&gt;&amp;nbsp; /nologo /MDd /W4 /Gm /Gi /GX /ZI /Od /D &amp;quot;_DEBUG&amp;quot; /D &amp;quot;VC_EXTRALEAN&amp;quot; /D &amp;quot;_WINDOWS&amp;quot; /D &amp;quot;_AFXCTL&amp;quot; /D &amp;quot;_WINDLL&amp;quot; /D &amp;quot;_AFXDLL&amp;quot; /D &amp;quot;_WIN32&amp;quot; /Fr&amp;quot;.\Debug/&amp;quot; /Fp&amp;quot;.\Debug/Midiio2k.pch&amp;quot; /Yu&amp;quot;stdafx.h&amp;quot; /Fo&amp;quot;.\Debug/&amp;quot; /Fd&amp;quot;.\Debug/&amp;quot; /FD /c &lt;br&gt;Win32 ANSI Debug Tab Link:&lt;br&gt;&amp;nbsp; winmm.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:&amp;quot;.\Debug/midiio2k.pdb&amp;quot; /debug /machine:IX86 /def:&amp;quot;.\midiio2k.def&amp;quot; /out:&amp;quot;.\Debug\midiio2k.ocx&amp;quot; /implib:&amp;quot;.\Debug/midiio2k.lib&amp;quot; &lt;br&gt;Win32 ANSI Debug Tab Resources:&lt;br&gt;&amp;nbsp; /l 0x409 /fo&amp;quot;.\Debug/MIDIIO2K.res&amp;quot; /i &amp;quot;$(OUTDIR)&amp;quot; /d &amp;quot;_DEBUG&amp;quot; /d &amp;quot;VC_EXTRALEAN&amp;quot; /d &amp;quot;_WIN32&amp;quot; /d &amp;quot;_AFXDLL&amp;quot; &lt;br&gt;Win32 ANSI Debug Tab MIDL:&lt;br&gt;&amp;nbsp; /nologo /D &amp;quot;_DEBUG&amp;quot; /D &amp;quot;VC_EXTRALEAN&amp;quot; /D &amp;quot;_WIN32&amp;quot; /mktyplib203 /win32 &lt;br&gt;Win32 ANSI Debug Tab Browser:&lt;br&gt;&amp;nbsp; /nologo /o&amp;quot;.\Debug\midiio2k.bsc&amp;quot;&lt;/p&gt;
&lt;p&gt;I opened the project in VS2008 Professional.&amp;nbsp; Visual Studio converted the&amp;nbsp; project with conversion wizard.&amp;nbsp; The conversion was successful with one warning about the solution and these comments:&lt;/p&gt;
&lt;p&gt;Conversion Issues - midiio2k.vcproj: &lt;br&gt;Web deployment to the local IIS server is no longer supported. The Web Deployment build tool has been removed from your project settings. &lt;br&gt;Project file successfully backed up as 'C:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.vcproj.8.00.old'. &lt;br&gt;Project upgraded successfully. &lt;br&gt;This application has been updated to include settings related to the User Account Control (UAC) feature of Windows Vista. By default, when run on Windows Vista with UAC enabled, this application is marked to run with the same privileges as the process that launched it. This marking also disables the application from running with virtualization. You can change UAC related settings from the Property Pages of the project.&lt;/p&gt;
&lt;p&gt;When I compiled I got these warnings:&lt;/p&gt;
&lt;p&gt;Warning&amp;nbsp;1&amp;nbsp;command line warning MIDL1007 : switch specified more than once on command line : mktyplib203&amp;nbsp;midl&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;2&amp;nbsp;command line warning MIDL1007 : switch specified more than once on command line : nologo&amp;nbsp;midl&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;3&amp;nbsp;warning C4918: 'a' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;4&amp;nbsp;warning C4918: 'i' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;5&amp;nbsp;warning C4918: 'p' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;6&amp;nbsp;warning C4918: 'w' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;7&amp;nbsp;warning C4918: 'x' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;295&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;8&amp;nbsp;warning C4535: calling _set_se_translator() requires /EHa&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\midiictl.cpp&amp;nbsp;466&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;9&amp;nbsp;warning C4535: calling _set_se_translator() requires /EHa&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\midioctl.cpp&amp;nbsp;554&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;10&amp;nbsp;warning LNK4222: exported symbol 'DllCanUnloadNow' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;11&amp;nbsp;warning LNK4222: exported symbol 'DllGetClassObject' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;12&amp;nbsp;warning LNK4222: exported symbol 'DllRegisterServer' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;13&amp;nbsp;warning LNK4222: exported symbol 'DllUnregisterServer' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;/p&gt;
&lt;p&gt;I removed these additional command switches for the linker:&lt;/p&gt;
&lt;p&gt;winmm.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:&amp;quot;.\Debug/midiio2k.pdb&amp;quot; /debug /machine:IX86 /def:&amp;quot;.\midiio2k.def&amp;quot; /out:&amp;quot;.\Debug\midiio2k.ocx&amp;quot; /implib:&amp;quot;.\Debug/midiio2k.lib&amp;quot;&lt;/p&gt;
&lt;p&gt;I removed these additional command switches for MIDL:&lt;/p&gt;
&lt;p&gt;/nologo /D &amp;quot;_DEBUG&amp;quot; /D &amp;quot;VC_EXTRALEAN&amp;quot; /D &amp;quot;_WIN32&amp;quot; /mktyplib203 /win32&lt;/p&gt;
&lt;p&gt;I removed these additional command switches for Resources:&lt;/p&gt;
&lt;p&gt;/l 0x409 /fo&amp;quot;.\Debug/MIDIIO2K.res&amp;quot; /i &amp;quot;$(OUTDIR)&amp;quot; /d &amp;quot;_DEBUG&amp;quot; /d &amp;quot;VC_EXTRALEAN&amp;quot; /d &amp;quot;_WIN32&amp;quot; /d &amp;quot;_AFXDLL&amp;quot;&lt;/p&gt;
&lt;p&gt;I removed these additional command switches for Browse Information:&lt;/p&gt;
&lt;p&gt;/nologo /o&amp;quot;.\Debug\midiio2k.bsc&amp;quot;&lt;/p&gt;
&lt;p&gt;The new command switches were:&lt;/p&gt;
&lt;p&gt;Win32 ANSI Debug Tab C/C++:&lt;br&gt;/D &amp;quot;_DEBUG&amp;quot; /D &amp;quot;VC_EXTRALEAN&amp;quot; /D &amp;quot;_WINDOWS&amp;quot; /D &amp;quot;_AFXCTL&amp;quot; /D &amp;quot;_WINDLL&amp;quot; /D &amp;quot;_AFXDLL&amp;quot; /D &amp;quot;_WIN32&amp;quot; /D &amp;quot;_VC80_UPGRADE=0x0600&amp;quot; /Gm /EHa /MDd /Yu&amp;quot;stdafx.h&amp;quot; /Fp&amp;quot;.\Debug/midiio2k.pch&amp;quot; /Fo&amp;quot;.\Debug/&amp;quot; /Fd&amp;quot;.\Debug/&amp;quot; /FR&amp;quot;.\Debug/&amp;quot; /W4 /nologo /c /ZI /TP /errorReport:prompt&lt;br&gt;Win32 ANSI Debug Tab Link:&lt;br&gt;/OUT:&amp;quot;.\Debug\midiio2k.ocx&amp;quot; /INCREMENTAL /NOLOGO /LIBPATH:&amp;quot;winmm.lib&amp;quot; /DLL /MANIFEST /MANIFESTFILE:&amp;quot;.\Debug\midiio2k.ocx.intermediate.manifest&amp;quot; /MANIFESTUAC:&amp;quot;level='asInvoker' uiAccess='false'&amp;quot; /DEF:&amp;quot;.\midiio2k.def&amp;quot; /DEBUG /PDB:&amp;quot;.\Debug/midiio2k.pdb&amp;quot; /SUBSYSTEM:WINDOWS /DYNAMICBASE:NO /IMPLIB:&amp;quot;.\Debug/midiio2k.lib&amp;quot; /ERRORREPORT:PROMPT winmm.libWin32 ANSI Debug Tab Resources:&lt;br&gt;Win32 ANSI Debug Tab MIDL:&lt;br&gt;/D &amp;quot;_DEBUG&amp;quot; /D &amp;quot;VC_EXTRALEAN&amp;quot; /D &amp;quot;_WIN32&amp;quot; /mktyplib203 /nologo /char signed /env win32&amp;nbsp; /tlb &amp;quot;.\Debug/midiio2k.tlb&amp;quot;&lt;br&gt;Win32 ANSI Debug Tab Browser:&lt;br&gt;/nologo /o &amp;quot;.\Debug\midiio2k.bsc&amp;quot;&lt;/p&gt;
&lt;p&gt;When I compiled I got these warnings:&lt;/p&gt;
&lt;p&gt;Warning&amp;nbsp;1&amp;nbsp;warning C4918: 'a' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;2&amp;nbsp;warning C4918: 'i' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;3&amp;nbsp;warning C4918: 'p' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;4&amp;nbsp;warning C4918: 'w' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;294&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;5&amp;nbsp;warning C4918: 'x' : invalid character in pragma optimization list&amp;nbsp;c:\audio recording\midi\librarian\midiio_2.1035\source\ocx32\compiler.h&amp;nbsp;295&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;6&amp;nbsp;warning LNK4222: exported symbol 'DllCanUnloadNow' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;7&amp;nbsp;warning LNK4222: exported symbol 'DllGetClassObject' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;8&amp;nbsp;warning LNK4222: exported symbol 'DllRegisterServer' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;br&gt;Warning&amp;nbsp;9&amp;nbsp;warning LNK4222: exported symbol 'DllUnregisterServer' should not be assigned an ordinal&amp;nbsp;c:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\midiio2k.def&amp;nbsp;1&amp;nbsp;midiio2k&lt;/p&gt;
&lt;p&gt;I took out 'a', 'i', 'p', 'w', 'x' from the pragma (optimization disabled anyway)&lt;/p&gt;
&lt;p&gt;I changed the .DEF file from:&lt;/p&gt;
&lt;p&gt;; midiio2k.def : Declares the module parameters.&lt;/p&gt;
&lt;p&gt;LIBRARY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MIDIIO2K.OCX&lt;/p&gt;
&lt;p&gt;EXPORTS&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllCanUnloadNow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @1 PRIVATE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllGetClassObject&amp;nbsp;&amp;nbsp; @2 PRIVATE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllRegisterServer&amp;nbsp;&amp;nbsp; @3 PRIVATE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllUnregisterServer @4 PRIVATE&lt;br&gt;;(see 1.20.106)&lt;/p&gt;
&lt;p&gt;;EXPORTS&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllCanUnloadNow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @1&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllGetClassObject&amp;nbsp;&amp;nbsp; @2&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllRegisterServer&amp;nbsp;&amp;nbsp; @3&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllUnregisterServer @4&lt;br&gt;; generates compile errors in visual c+ 6.0&lt;/p&gt;
&lt;p&gt;to:&lt;/p&gt;
&lt;p&gt;; midiio2k.def : Declares the module parameters.&lt;/p&gt;
&lt;p&gt;LIBRARY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MIDIIO2K.OCX&lt;/p&gt;
&lt;p&gt;EXPORTS&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllCanUnloadNow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRIVATE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllGetClassObject&amp;nbsp;&amp;nbsp; PRIVATE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllRegisterServer&amp;nbsp;&amp;nbsp; PRIVATE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllUnregisterServer PRIVATE&lt;br&gt;;(see 1.20.106)&lt;/p&gt;
&lt;p&gt;;EXPORTS&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllCanUnloadNow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @1&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllGetClassObject&amp;nbsp;&amp;nbsp; @2&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllRegisterServer&amp;nbsp;&amp;nbsp; @3&lt;br&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllUnregisterServer @4&lt;br&gt;; generates compile errors in visual c+ 6.0&lt;/p&gt;
&lt;p&gt;When I recompiled I got no warnings and no errors.&lt;/p&gt;
&lt;p&gt;The build output was:&lt;/p&gt;
&lt;p&gt;1&amp;gt;------ Rebuild All started: Project: midiio2k, Configuration: ANSI Debug Win32 ------&lt;br&gt;1&amp;gt;Deleting intermediate and output files for project 'midiio2k', configuration 'ANSI Debug|Win32'&lt;br&gt;1&amp;gt;Creating Type Library...&lt;br&gt;1&amp;gt;Processing .\midiio2k.odl&lt;br&gt;1&amp;gt;midiio2k.odl&lt;br&gt;1&amp;gt;Processing C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\oaidl.idl&lt;br&gt;1&amp;gt;oaidl.idl&lt;br&gt;1&amp;gt;Processing C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\objidl.idl&lt;br&gt;1&amp;gt;objidl.idl&lt;br&gt;1&amp;gt;Processing C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\unknwn.idl&lt;br&gt;1&amp;gt;unknwn.idl&lt;br&gt;1&amp;gt;Processing C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\wtypes.idl&lt;br&gt;1&amp;gt;wtypes.idl&lt;br&gt;1&amp;gt;Processing C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\basetsd.h&lt;br&gt;1&amp;gt;basetsd.h&lt;br&gt;1&amp;gt;Processing C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\guiddef.h&lt;br&gt;1&amp;gt;guiddef.h&lt;br&gt;1&amp;gt;Processing C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\oaidl.acf&lt;br&gt;1&amp;gt;oaidl.acf&lt;br&gt;1&amp;gt;Compiling...&lt;br&gt;1&amp;gt;STDAFX.CPP&lt;br&gt;1&amp;gt; &lt;br&gt;1&amp;gt;----------------------------------------------------------------------&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6771, sometimes verify project settings are accurate (see _project settings.txt)&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6772, sometimes verify project settings use level 4 warnings. Specify /GX.&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6773, sometimes verify project settings uses only certain optimization. (see COMPILER.H).&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6780, sometimes Rebuild-All with DEBUGTEST configuration.&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6781, sometimes verify code with conditions related to C4706 warnings but are not shown (see PRAGMA.H and 1.20.125)&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6782, sometimes verify code does not mix 'false' and 'FALSE' (see 1.20.127)&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6783, always fix IDs that class wizard changes (see 2.00.204)&lt;br&gt;1&amp;gt;COMPILER.H: PROGRAM WARNING 6790, formatted most source code with tabs as 4 spaces in options (or copy tab character and search/replace it)&lt;br&gt;1&amp;gt;----------------------------------------------------------------------&lt;br&gt;1&amp;gt; WINVER not defined. Defaulting to 0x0600 (Windows Vista)&lt;br&gt;1&amp;gt;Compiling...&lt;br&gt;1&amp;gt;cathelp.cpp&lt;br&gt;1&amp;gt;midiictl.cpp&lt;br&gt;1&amp;gt;midiio.cpp&lt;br&gt;1&amp;gt;midiippg.cpp&lt;br&gt;1&amp;gt;midiiwnd.cpp&lt;br&gt;1&amp;gt;midioctl.cpp&lt;br&gt;1&amp;gt;midioppg.cpp&lt;br&gt;1&amp;gt;midiownd.cpp&lt;br&gt;1&amp;gt;queue.cpp&lt;br&gt;1&amp;gt;Generating Code...&lt;br&gt;1&amp;gt;Compiling resources...&lt;br&gt;1&amp;gt;Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0&lt;br&gt;1&amp;gt;Copyright (C) Microsoft Corporation.&amp;nbsp; All rights reserved.&lt;br&gt;1&amp;gt;Compiling manifest to resources...&lt;br&gt;1&amp;gt;Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0&lt;br&gt;1&amp;gt;Copyright (C) Microsoft Corporation.&amp;nbsp; All rights reserved.&lt;br&gt;1&amp;gt;Linking...&lt;br&gt;1&amp;gt;&amp;nbsp;&amp;nbsp; Creating library .\Debug/midiio2k.lib and object .\Debug/midiio2k.exp&lt;br&gt;1&amp;gt;Embedding manifest...&lt;br&gt;1&amp;gt;Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0&lt;br&gt;1&amp;gt;Copyright (C) Microsoft Corporation.&amp;nbsp; All rights reserved.&lt;br&gt;1&amp;gt;Creating browse information file...&lt;br&gt;1&amp;gt;Microsoft Browse Information Maintenance Utility Version 9.00.21022&lt;br&gt;1&amp;gt;Copyright (C) Microsoft Corporation. All rights reserved.&lt;br&gt;1&amp;gt;Build log was saved at &amp;quot;&lt;a&gt;file://c:\Audio&lt;/a&gt; Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\Debug\BuildLog.htm&amp;quot;&lt;br&gt;1&amp;gt;midiio2k - 0 error(s), 0 warning(s)&lt;br&gt;========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========&lt;/p&gt;
&lt;p&gt;The output directory was:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Volume in drive C is SQ004668V05&lt;br&gt;&amp;nbsp;Volume Serial Number is 848A-BC85&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Directory of C:\Audio Recording\MIDI\Librarian\MIDIIO_2.1035\Source\OCX32\Debug&lt;/p&gt;
&lt;p&gt;10/19/2009&amp;nbsp; 10:06 AM&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;br&gt;10/19/2009&amp;nbsp; 10:06 AM&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ..&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21,626 BuildLog.htm&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6,314 cathelp.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 cathelp.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,193,894 midiictl.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 midiictl.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29,120 midiio.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 midiio.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8,580,096 midiio2k.bsc&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,248 midiio2k.exp&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,423,088 midiio2k.ilk&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,540 midiio2k.lib&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,197,568 midiio2k.ocx&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 920 midiio2k.ocx.embed.manifest&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 984 midiio2k.ocx.embed.manifest.res&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 861 midiio2k.ocx.intermediate.manifest&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 27,262,976 midiio2k.pch&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6,122,496 midiio2k.pdb&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29,388 MIDIIO2K.res&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21,176 midiio2k.tlb&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 37,505 midiippg.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 midiippg.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21,281 midiiwnd.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 midiiwnd.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3,735,008 midioctl.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 midioctl.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 37,626 midioppg.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 midioppg.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 38,037 midiownd.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 midiownd.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:57 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 66 mt.dep&lt;br&gt;10/19/2009&amp;nbsp; 10:06 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 outtxt.txt&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 144,242 queue.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 queue.sbr&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 467,898 STDAFX.obj&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3,381,306 STDAFX.sbr&lt;br&gt;09/28/2006&amp;nbsp; 10:00 PM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 887,808 vc80.idb&lt;br&gt;09/28/2006&amp;nbsp; 10:00 PM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 872,448 vc80.pdb&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,092,608 vc90.idb&lt;br&gt;10/19/2009&amp;nbsp; 09:56 AM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,281,472 vc90.pdb&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 39 File(s)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 59,890,600 bytes&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 Dir(s)&amp;nbsp; 115,918,520,320 bytes free&lt;/p&gt;
&lt;p&gt;I was able to successfully register midiio2k.ocx in an admistrator shell using regsvr32.exe&lt;/p&gt;
&lt;p&gt;I was able to create the axmidiiolib.dll and midiiolib.dll using aximp.exe&lt;/p&gt;
&lt;p&gt;When I ran my app and tried tried to open the midi port I received the error:&lt;/p&gt;
&lt;p&gt;Microsoft Visual Studio C Runtime Library has detected a fatal error in Kurzweil Librarian Editor.exe.&lt;/p&gt;
&lt;p&gt;Press Break to debug the program or Continue to terminate the program.&lt;/p&gt;
&lt;p&gt;This was the call stack:&lt;br&gt;&amp;gt;&amp;nbsp;msvcr90d.dll!_crt_debugger_hook(int _Reserved=2)&amp;nbsp; Line 62&amp;nbsp;C&lt;br&gt;&amp;nbsp;&amp;nbsp;msvcr90d.dll!_invalid_parameter(const wchar_t * pszExpression=0x1014e700, const wchar_t * pszFunction=0x1014eee8, const wchar_t * pszFile=0x1014e2a0, unsigned int nLine=112, unsigned int pReserved=0)&amp;nbsp; Line 112 + 0x7 bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;midiio2k.ocx!std::_Deque_const_iterator&amp;lt;LPQueueStreamMList,std::allocator&amp;lt;LPQueueStreamMList&amp;gt;,1&amp;gt;::operator*()&amp;nbsp; Line 112 + 0x41 bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;midiio2k.ocx!std::_Deque_iterator&amp;lt;LPQueueStreamMList,std::allocator&amp;lt;LPQueueStreamMList&amp;gt;,1&amp;gt;::operator*()&amp;nbsp; Line 387&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;midiio2k.ocx!std::deque&amp;lt;LPQueueStreamMList,std::allocator&amp;lt;LPQueueStreamMList&amp;gt; &amp;gt;::operator[](unsigned int _Pos=0)&amp;nbsp; Line 775 + 0x3d bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;midiio2k.ocx!CMidiOutCtrl::OnResetStateVars()&amp;nbsp; Line 948 + 0x10 bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;midiio2k.ocx!CMidiOutCtrl::CMidiOutCtrl()&amp;nbsp; Line 619&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;midiio2k.ocx!CMidiOutCtrl::CreateObject()&amp;nbsp; Line 72 + 0x47 bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;mfc90d.dll!CRuntimeClass::CreateObject()&amp;nbsp; Line 142 + 0x8 bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;mfc90d.dll!COleObjectFactory::OnCreateObject()&amp;nbsp; Line 324 + 0xb bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;mfc90d.dll!COleObjectFactory::XClassFactory::CreateInstanceLic(IUnknown * pUnkOuter=0x00000000, IUnknown * __formal=0x00000000, const _GUID &amp;amp; riid={...}, wchar_t * bstrKey=0x00000000, void * * ppvObject=0x002fcee0)&amp;nbsp; Line 547 + 0xd bytes&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;mfc90d.dll!COleObjectFactory::XClassFactory::CreateInstance(IUnknown * pUnkOuter=0x00000000, const _GUID &amp;amp; riid={...}, void * * ppvObject=0x002fcee0)&amp;nbsp; Line 464&amp;nbsp;C++&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!DllGetClassObject()&amp;nbsp; + 0x14b7 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;[Frames below may be incorrect and/or missing, no symbols loaded for ole32.dll]&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoGetComCatalog()&amp;nbsp; + 0xaba bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!DllGetClassObject()&amp;nbsp; + 0x15db bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!DllGetClassObject()&amp;nbsp; + 0x1550 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!DllGetClassObject()&amp;nbsp; + 0x139a bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!DllGetClassObject()&amp;nbsp; + 0x134b bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!DllGetClassObject()&amp;nbsp; + 0x163e bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoGetComCatalog()&amp;nbsp; + 0xaba bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoGetComCatalog()&amp;nbsp; + 0xb65 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoGetComCatalog()&amp;nbsp; + 0xaba bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoGetComCatalog()&amp;nbsp; + 0x9ba bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoCreateInstanceEx()&amp;nbsp; + 0xd7 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoCreateInstanceEx()&amp;nbsp; + 0x38 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ole32.dll!CoCreateInstance()&amp;nbsp; + 0x34 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;[Managed to Native Transition]&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.AxHost.CreateWithoutLicense(System.Guid clsid) + 0x2e bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.AxHost.CreateWithLicense(string license, System.Guid clsid) + 0xb5 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.AxHost.CreateInstanceCore(System.Guid clsid) + 0x29 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.AxHost.CreateInstance() + 0x3f bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.AxHost.GetOcxCreate() + 0x16 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.AxHost.TransitionUpTo(int state = 2) + 0xd2 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.AxHost.CreateHandle() + 0x26 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.CreateControl(bool fIgnoreVisible = false) + 0x8a bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.CreateControl() + 0x24 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.ControlCollection.Add(System.Windows.Forms.Control value = {AxMidiioLib.AxMIDIOutput}) + 0x147 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Form.ControlCollection.Add(System.Windows.Forms.Control value) + 0x3b bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.ParentInternal.set(System.Windows.Forms.Control value) + 0x29 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.Parent.set(System.Windows.Forms.Control value) + 0xb bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;Kurzweil Librarian Editor.exe!Kurzweil_Librarian_Editor.MIDI_Interface.Get_All_MIDI_Out_Ports(Object sender = {Kurzweil_Librarian_Editor.MIDISysex}) Line 894 + 0x4e bytes&amp;nbsp;Basic&lt;br&gt;&amp;nbsp;&amp;nbsp;Kurzweil Librarian Editor.exe!Kurzweil_Librarian_Editor.MIDISysex.ToolStripTextBox4_Click(Object sender = {System.Windows.Forms.ToolStripTextBox}, System.EventArgs e = {X = 317 Y = 4 Button = System.Windows.Forms.MouseButtons.Left}) Line 1375 + 0xe bytes&amp;nbsp;Basic&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ToolStripItem.RaiseEvent(object key, System.EventArgs e) + 0x58 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ToolStripItem.OnClick(System.EventArgs e) + 0x24 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ToolStripControlHost.HandleClick(object sender, System.EventArgs e) + 0xe bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnClick(System.EventArgs e) + 0x70 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.TextBoxBase.OnMouseUp(System.Windows.Forms.MouseEventArgs mevent = {X = 317 Y = 4 Button = Left}) + 0x77 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.WmMouseUp(ref System.Windows.Forms.Message m, System.Windows.Forms.MouseButtons button, int clicks) + 0x28f bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m) + 0x885 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.TextBoxBase.WndProc(ref System.Windows.Forms.Message m) + 0x37 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.TextBox.WndProc(ref System.Windows.Forms.Message m) + 0x93 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ToolStripTextBox.ToolStripTextBoxControl.WndProc(ref System.Windows.Forms.Message m) + 0x11 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m) + 0x10 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m) + 0x31 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.DebuggableCallback(System.IntPtr hWnd, int msg = 514, System.IntPtr wparam, System.IntPtr lparam) + 0x57 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;[Native to Managed Transition]&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;user32.dll!GetWindowLongW()&amp;nbsp; + 0x4b3 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;user32.dll!GetWindowLongW()&amp;nbsp; + 0x58b bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;user32.dll!GetMessageW()&amp;nbsp; + 0x296 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;user32.dll!DispatchMessageW()&amp;nbsp; + 0xf bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;[Managed to Native Transition]&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(int dwComponentID, int reason = -1, int pvLoopData = 0) + 0x24e bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason = -1, System.Windows.Forms.ApplicationContext context = {Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.WinFormsAppContext}) + 0x177 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) + 0x61 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.ApplicationContext context) + 0x18 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() + 0x81 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() + 0xef bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(string[] commandLine) + 0x68 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;mscoree.dll!_CorExeMain()&amp;nbsp; + 0x34 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;kernel32.dll!BaseThreadInitThunk()&amp;nbsp; + 0x12 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ntdll.dll!RtlInitializeExceptionChain()&amp;nbsp; + 0x63 bytes&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;ntdll.dll!RtlInitializeExceptionChain()&amp;nbsp; + 0x36 bytes&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I went through Dependency Walker to check dependencies.&amp;nbsp; These issues turned up:&lt;/p&gt;
&lt;p&gt;MSVCR90D.DLL - Not Found&lt;br&gt;IESHIMS.DLL - Not Found&lt;/p&gt;
&lt;p&gt;c:\windows\system32\IEFRAME.DLL&lt;/p&gt;
&lt;p&gt;#160 - Not Bound&lt;br&gt;#159 - Not Bound&lt;br&gt;#141 - Not Bound&lt;/p&gt;
&lt;p&gt;I believe that MSVCR90D.DLL is the debug run time (Microsoft&amp;reg; C Runtime Library, v. 9.0.30729.1).&lt;br&gt;It was not in the system32 directory.&amp;nbsp; I retrived these files and paced them the system32 directory.&amp;nbsp; I still have the &amp;quot;Not Bound&amp;quot; issues for:&lt;/p&gt;
&lt;p&gt;#159&lt;br&gt;#141&lt;br&gt;#160&lt;br&gt;#165&lt;br&gt;#167&lt;br&gt;#142&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>markdart</author><pubDate>Mon, 19 Oct 2009 20:27:16 GMT</pubDate><guid isPermaLink="false">New Post: OCX Port 20091019082716P</guid></item><item><title>New Post: OCX Port</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=72132</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hey Mark, could you let me know your repro steps? It would help us to identify the problem or give you a solution.&lt;/p&gt;&lt;/div&gt;</description><author>beexb</author><pubDate>Mon, 19 Oct 2009 09:34:21 GMT</pubDate><guid isPermaLink="false">New Post: OCX Port 20091019093421A</guid></item><item><title>New Post: OCX Port</title><link>http://clrinterop.codeplex.com/Thread/View.aspx?ThreadId=72132</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I have a product that uses an activex wrapper and an ocx control.&amp;nbsp; I also have the source for the control in c++.&amp;nbsp; I was able to successfully convert it into VS2008 pro.&amp;nbsp; With almost no changes to the source I was able to successfully compile with no warnings or errors.&amp;nbsp; It is a MFC shared dll.&amp;nbsp; I checked out the tlb and it looks good with all the events and functions listed and an embedded manifest.&amp;nbsp; I used aximp to create a new activex wrapper from the tlb.&amp;nbsp; However, when I try to register the ocx I get the dreaded 0x80040200 error.&amp;nbsp; I have processmon but have seen no obvious issues with registration (not very familiar with that tool though).&amp;nbsp; I know about Vista and UAC.&amp;nbsp; I can successfully register and use the original ocx binary with an aximp generated wrapper.&amp;nbsp; It is in my current product with over 1000 copies sold to date.&amp;nbsp; I guess my questions are:&lt;/p&gt;
&lt;p&gt;1 Any thoughts&amp;nbsp;or ideas?&lt;/p&gt;
&lt;p&gt;2. Is there a tool that will let me step through the registration process to see where it fails?&lt;/p&gt;
&lt;p&gt;3. Is there a tool that will let me see what is in the ocx file?&lt;/p&gt;
&lt;p&gt;Any comments are very much appreciated!&lt;/p&gt;
&lt;p&gt;Mark&lt;/p&gt;&lt;/div&gt;</description><author>markdart</author><pubDate>Thu, 15 Oct 2009 18:49:57 GMT</pubDate><guid isPermaLink="false">New Post: OCX Port 20091015064957P</guid></item></channel></rss>