|
Hello -> my apologies if this has been asked before....
I have a com wrapped dotnet dll. I use regasm and it runs with a result of successful. I try to create an instance of it using an asp page and fails to create object. I made a dotnet setup project (msi) and after the setup I run the asp page and it successfully creates the instance. What is setup doing that regasm isn't? I am not providing any arguments to regasm besides the dll name and path. Am i missing something to tell regasm to work properly?
Any help would be greatly appreciated. Thank you.
Nathan
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous
'Life's real failure is when you do not realize how close you were to success when you gave up.' ~ anonymous
|
|
|
|
|
nlarson11 wrote: What is setup doing that regasm isn't?
Perhaps it's not creating a TypeLibrary?
regasm.exe MyNetAssembly.dll /register /codebase /tlb
I are Troll
|
|
|
|
|
Hello Guys,
I need a help reagarding interview questions. I have an interview coming tuesday. what questions can I except in the interview. Please share you views. This position description is below
- Experience in working directly with web servers, and databases SQL Server 2008
- Knowledge of, XHTML, DHTML, CSS, JavaScript, DOM, JSON.
- Experience with application development in C#, PHP, ASP .net.
what is the best answer to tell if I asked for my experience in the last project.
Any help would be highly appeciated,
Thanks
|
|
|
|
|
1) Describe rest
2) What is a security concern with JSON and eval
3) What cross-browser issues should you be concerned with regarding the DOM
4) With CSS
5) With Javascript
6) Define DHTML
7) What is a common configuration issue with IIS regarding hosting ASP.NET and what is the solution?
|
|
|
|
|
sweety1988 wrote: what is the best answer to tell if I asked for my experience in the last project
The truth
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Now there's a novel concept.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
You're going to get any questions they feel like asking. There is no predicting, no standard set of questions. Either you know this stuff or you don't.
|
|
|
|
|
- any questions about things you have real experience with: tell a convincing story, not too technical, make your experience stand.
- be honest about experience you don't have. They will find out if your not honest. Tell them that you are a fast learner and that you will learn it quickly - even if you hesitate yourself on that.
- realize that someone who has all the experience they ask for probabilly don't wants the job because it has no challenge anymore for him.
- answer any non-technical question in a non-technical way. Reply to direct technical questions in a technical way. Be to the point and ask if your answer is enough.
- only speak about negative aspects of your current job in a general way: they don't want to know the nasty details.
- Know the company, try to understand what they want to achieve with you, participate on that. Realize that their goals mostly will not be: technical goals but bussiness goals.
- Try to find out who is the most important of the people you speak. Make sure he/she has a possitive impression of you, but don't forget the others.
And last the best tip i ever had:
Sit, speak and be there like you would be if you already had the job.
|
|
|
|
|
Is there any .Net framework classes which deal in file associations ? I am looking for the .Net equivalent of the Win32 shell functions "AssocQueryString" and "FindExecutable".
Edward Diener
|
|
|
|
|
Edward Diener wrote: Is there any .Net framework classes which deal in file associations
No.
Edward Diener wrote: I am looking for the .Net equivalent of the Win32 shell functions "AssocQueryString" and "FindExecutable".
There are no managed code versions of these functions.
|
|
|
|
|
Hi,
I want to use a simple function in a C++ DLL. The declaration in the header file for that function is:
#define API_SPEC __declspec(dllexport)
void API_SPEC API_getApiVersion (std::wstring *version)
That function receive a pointer to a UNICODE string and will put the release ID of that API in that string. (correct me if i'm wrong!)
I use VB.Net to call that DLL and read the content of that string. Here is my code:
Public Class Form1
<DllImport("C:\Api.dll", EntryPoint:="?API_getApiVersion@@YAXPAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@Z", CallingConvention:=CallingConvention.ThisCall, CharSet:=CharSet.Unicode)> _
Public Shared Sub test(ByVal version As String)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim theVersion As String = New String(" "c, 20)
Call test(theVersion )
MessageBox.Show(theVersion)
End Sub
End Class
When I run that code I get:"AccessViolationException was unhandled."
My question: what is wrong with my code? I even try to use a stringbuilder instead of string type but I got the same error.
Thanks for your help!
|
|
|
|
|
Hi,
I don't have the full answer, however here are some pointers:
1.
IMO for writable strings you must use a StringBuilder, give it sufficient capacity, pass it on, then convert it to a string using ToString()
2.
your entypoint seems very bizarre, and way too long. I suggest you check it, perhaps using DUMPBIN/EXPORT
3.
I have an unfinished article[^]dealing with P/Invoke, maybe that can help you.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Thanks Luc, I will have a look to your article.
I took the entrypoint name using DUMPBIN /EXPORT.
|
|
|
|
|
Following on from Luc's comment, your exported function name is in C++ format, it should be C. Change your header file to put extern "C" { in front of the definition and } after it, and you should get exported as written.
MVP 2010 - are they mad?
|
|
|
|
|
Richard, do you mean that because the DLL has been written in C++ it can't be exported to DotNet?
That I lost a week trying to find a solution when there is not that way?
Unfortunately, because the DLL is from a third party, I can't recompile to change the export statement.
|
|
|
|
|
TremaHD wrote: do you mean that because the DLL has been written in C++ it can't be exported to DotNet?
Not quite, it's just that the usual method is to export class/method names in clear "C" format rather than C++. I think you should still be able to use it, but you probably need the documentation that should come with it. If it's a third party DLL then you should approach the supplier/writer first.
[edit]Also I do not think that you can pass a .NET String reference as a std::wstring pointer.[/edit]
MVP 2010 - are they mad?
|
|
|
|
|
Thanks Richard and Luc for your replies, really appreciated!
Richard, for the string type I agree with you, that's why I tried a Stringbuilder type instead, but no more result.
About the documentation, I though that the header file of the API was enough (.h file). I also have a .lib file but I think that is for C++ so not useful for me with Dot Net. What else could have been useful?
|
|
|
|
|
Your original post shows the following extract from the header file:
#define API_SPEC __declspec(dllexport)
void API_SPEC API_getApiVersion (std::wstring *version)
Since you cannot directly convert a VB.NET String to a C++ std::wstring* I think the only solution is to write a C++ interface that can take a pointer to a StringBuilder object. This code could then call the API passing a pointer to a std::wstring which it will copy to the StringBuilder before returning to the VB.NET code.
Comments, Luc?
MVP 2010 - are they mad?
|
|
|
|
|
Hello all,
I think the solution here is to use the COM interoperability provided by dotNET. Note that I have not yet tried this myself, but I believe you have to use MarshallAs to ensure that VB.NET, in this case, converts the string before the call to a LPWSTR and after the call converts it back to a VB string.
Whether you have to use a stringbuilder or a string here I'm not sure, but my best guess is that you can use a normal string.
Here's a msdn link that might help, though it's not entirely clear to me:
http://msdn.microsoft.com/en-us/library/s9ts558h(VS.71).aspx
I'm not currently in a position to access VB.NET (or any other .NET language for that matter), so I'm sorry I can't give you the complete code.
Maybe one of the other repliers can help you out more.
Good Luck,
MicroVirus
|
|
|
|
|
The link provide good information and I tried but what I got is a Debug Assertion Failed box on the expression: _CrtIsValidHeapPointer(pUserData)
|
|
|
|
|
MicroVirus wrote: I think the solution here is to use the COM interoperability provided by dotNET.
He is already using that. The problem is that the C++ library function expects as input parameter a std::wstring* and I don't think there is any marshalling for such a class, so there has to be a user written intermediate function that accepts a char/byte[] and converts to and from the string class.MVP 2010 - are they mad?
|
|
|
|
|
Ouch right... I obviously overlooked that :S
In that case you're absolutely right and a wrapper needs to be written. Easiest way is to do that in (unmanaged) C++. I'd suggest taking the Windows API path on this one and write a function that takes a LPWSTR and size of the buffer, and returns the result of the function you are trying to access in this buffer.
|
|
|
|
|
As I recommended a few days ago!
<i>MVP 2010 - are they mad?</i>
|
|
|
|
|
AFAIK all extern 'C' does is tell the C++ compiler not to mangle the method names, which makes it easier to get the P/Invoke entrypoint right. Real C++ code can be P/Invoked without problems.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Any comments on my latest, above?
MVP 2010 - are they mad?
|
|
|
|