|
Operating system is windows 10 pro , 64bit, processor x64 based
I am compiling app as x86.
I do not know how to find if library is 32 or 64 bit only
|
|
|
|
|
Run up a "Visual Studio X86 native tools command line".
Use CD to change to the folder containing the DLL file.
Type this: "dumpbin /headers nameofthedllfile.DLL" and press enter.
if you scroll back to the beginning of the output, it will give you the PE file details,
which will look like this for a x86 DLL:
PE signature found
File Type: DLL
FILE HEADER VALUES
14C machine (x86)
3 number of sections
546DE7F8 time date stamp Thu Nov 20 13:09:12 2014
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
2102 characteristics
Executable
32 bit word machine
DLL And like this for a x64:
PE signature found
File Type: DLL
FILE HEADER VALUES
8664 machine (x64)
2 number of sections
5BB6183D time date stamp Thu Oct 04 14:40:13 2018
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
Executable
Application can handle large (>2GB) addresses
DLL
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
From the type given in the error message, "OpcRcw.Dx", and the quick Google search I did, you're trying to use the .NET 1.x version of the library which will not work in any app compiled against .NET 2.0 and above.
|
|
|
|
|
I see that the calling code is searching for a specific version of OpcRcw.Dx.dll
Now is it the calling code wrongly searching an old/uncompatible version or is it simply the OpcRcw.Dx.dll of an old version and so to be replaced?
|
|
|
|
|
You set a reference to the RCW version in your project, so that's the version the code is looking for.
|
|
|
|
|
I took the "new" OPC libraries from the folder I was speaking some posts ago installed I guess by the factory talk gateway and they are version
2.1.106.0 . Then I copied them within the opportune "solution" folder overwriting the old ones. Then I added the reference to them to the app. Now I get compiling errors that I cannot decode. I attach here one of them.
It is in italian so I try to translate
It was impossible to resolve reference "OpcNetApi, ...." because it was compiled with framework
".NETFramework,Version=v4.5.1" This is successive to the current destination framework v4.0
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3274: non è stato possibile risolvere il riferimento primario "OpcNetApi, Version=2.1.106.0, Culture=neutral, PublicKeyToken=78aea80f6827b5ab, processorArchitecture=MSIL" perché è stato compilato con il framework".NETFramework,Version=v4.5.1". Questa versione è successiva a quella del framework di destinazione corrente ".NETFramework,Version=v4.0,Profile=Client".
|
|
|
|
|
When you start copying .DLL's all over and setting references to them, you're throwing out all the documented standard procedures and solutions.
I have no idea how this library works, how it behaves in Visual Studio, or how it appears in References.
References does tell you which libraries are referenced. Just click on the reference and look in the Properties window and it'll tell you what the filename is.
As for how to fix this, I can't tell you. I'm not familiar with the library at all. Everything I've said has just come from a Google search.
|
|
|
|
|
Ok
I had to open the app.csproj with notepad and change
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
into
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
Now app compiles. But do you know how to discriminate within an existing project if it is done to work with a certain framework version of .NET or with another (without doing what I did opening with a text editor the .csproj file) ?. And further do you know how to change version to that app or to a new one with the tools of visual studio.
Thank you for the help
Roberto
|
|
|
|
|
Go into the Project Properties and change the Target Framework.
|
|
|
|
|
I have two USB touchscreens connected to a PC. I need a way of detecting which of the two touchscreens was last touched via its HID PID, VID or port. What makes it difficult is that the app that needs to be detecting this will be minimized so will not have the focus i.e. it will not be active. I have experimented with some samples I found online using the RAWINPUT approach with two USB keyboards but that requires the app to be active in order to receive the keyboard events.
The OS that this app will need to run on is both Windows 7 and 10. I am not looking to capture any data from the device but just to know which of the two devices is currently sending data.
Is there a way of doing this using C#?
Thanks.
|
|
|
|
|
I have a simple valid JSON file:
{
"statistiques":
{
"number":20944
}
}
I am using NewtonSoft JSON
and used this example as a starting point:
Deserialize JSON from a file
public class statistiques
{
public int number;
};
string raw = File.ReadAllText(@"C:\data.json");
statistiques allStats = JsonConvert.DeserializeObject<statistiques>(raw);
The resulting AllStats is empty.
Am I missing something ?
Solution:
public class RootObject
{
public Statistiques statistiques { get; set; }
public List<Circonscription> circonscriptions { get; set; }
}
I needed to have a root class.
Thanks.
I'd rather be phishing!
modified 2-Oct-18 15:48pm.
|
|
|
|
|
It seems I have a memory leak in my app. Which I seem to be able to reproduce with this simple console app.
Could anyone tell me what I am missing or where I am mislead?
(FYI, working set is printed about every seconds..)
using System;
using System.Threading;
using System.Threading.Tasks;
namespace CrazyAsync
{
class Foo
{
public Func<CancellationToken, Task> Work;
public async Task DoWork(CancellationToken token)
{
while (!token.IsCancellationRequested)
await Work?.Invoke(token);
}
}
class Mamamia
{
public Task DoIt(CancellationToken token)
{
var t = Task.Delay(6, token);
t.ContinueWith(x =>
{
if (x.Status == TaskStatus.Faulted)
Console.WriteLine(x.Exception.InnerException);
if (i++ % 100 == 0)
{
GC.Collect();
Program.DumpMemory();
}
});
return t;
}
int i = 0;
}
class Program
{
static async Task Main(string[] args)
{
var cc = new CancellationTokenSource(TimeSpan.FromMinutes(1));
var m = new Mamamia();
var foo = new Foo()
{
Work = m.DoIt,
};
await foo.DoWork(cc.Token);
}
public static void DumpMemory()
{
var m = Environment.WorkingSet;
Console.WriteLine($"Mem: {m:#,###}");
}
}
}
[EDIT] my bad, the memory only seems to increase for 2 minutes after all.... must be a wrong lead
modified 2-Oct-18 4:28am.
|
|
|
|
|
My only note would be that CancellationTokenSource is disposable, but that should only impact your cleanup.
"Never attribute to malice that which can be explained by stupidity."
- Hanlon's Razor
|
|
|
|
|
I want code for Sqlite DB Browser Verication Multiple DB verification in entire Data
COde in Windows Form
I tried the code but not Verify the proporlly
|
|
|
|
|
wrote: I want code for This site does not provide code to order.
wrote: I tried the code but not What code? Please edit your question and provide proper details of your problem.
|
|
|
|
|
It doesn't quite work like that.
We do not do your work for you.
If you want someone to write your code, you have to pay - I suggest you go to Freelancer.com and ask there.
But be aware: you get what you pay for. Pay peanuts, get monkeys.
The idea of "development" is as the word suggests: "The systematic use of scientific and technical knowledge to meet specific objectives or requirements." BusinessDictionary.com[^]
That's not the same thing as "have a quick google and give up if I can't find exactly the right code".
So either pay someone to do it, or learn how to write it yourself. We aren't here to do it for you.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
How do I alter my code to generate a 4 by 9 array of random numbers between -2 and 4? It currently is generating a 9 by 9 array of random numbers.
static void Main(string[] args)
{
Random r = new Random();
const int size = 9;
int[,] arr = new int[size, size];
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
arr[i, j] = r.Next(-2, 4);
Console.Write(arr[i, j] + " ");
}
Console.WriteLine(" ");
}
Console.ReadKey();
|
|
|
|
|
You have a variable, size , with a value of 9. Where's your value of 4 for an array size?
|
|
|
|
|
You need to change this line:
int[,] arr = new int[size, size]; When you create a new array, you specify both sizes in the constructor:
new int[RowCount, ColumnCount]; Your code specifies that both dimensions are the same size, which is fine for a chess board for example, but not what you need for a set of dominos perhaps.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Hi,
I’m struggling with converting Python code to C#, i have this line in the Python code and I’m not sure how to implement it in C#:
self.httpServ.request('GET', '/loadinst.cgi'%cmd_type, "<EEX Ver='1.0'><CMD type=%s /></EEX>" % cmd)
Wireshark looks like this:
GET /loadinst.cgi HTTP/1.1
Host: xxx.xxx.xxx.148
Accept-Encoding: identity
Content-Length: 119
Data(119)
<EEX Ver='1.0'><CMD type='loadinst' DriverStatusCode='0' emAdapterType='EEXp' id='0' instrumentType='' ipSA='' /></EEX>
and im trying to use:
var URL1 = (URL + cmd);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL1);
request.Method = "GET";
WebResponse response = request.GetResponse();
with no real luck... any idea?
Thanks,
|
|
|
|
|
wrote: any idea? None whatsoever, since we have no idea what "with no real luck" is supposed to mean.
|
|
|
|
|
OK, thanks...
I`m failing to write to the data field, in the original Python code the method is GET and still i see data on the request data field but on the C# code I’m not sure how to get the same capture, im getting something like this, where my data (the commands to the remote system "<eex ver="1.0"><cmd ....")="" been="" attached="" to="" the="" header:
<pre="">GET /loadinst.cgi <EEX Ver='1.0'><CMD ....
Host: xxx.xxx.xxx.148
Accept-Encoding: identity
and the data field is empty, so the remote instrument refuse the connection.
So my question is what is the C# implementation to get something like this:
Hypertext Transfer Protocol
GET /loadinst.cgi HTTP/1.1\r\n
Host: xxx.xxx.xxx.148\r\n
Accept-Encoding: identity\r\n
Content-Length: 119\r\n
\r\n
[Full request URI: http:
[HTTP request 1/1]
[Response in frame: 30]
File Data: 119 bytes
Data (119 bytes)
Data: <EEX Ver='1.0'><CMD...
[Length: 119]
thanks for the help...
|
|
|
|
|
Hi,
I am currently learning C#, and have been asked to switch 2 variables values, (make x be y and y be x), I have done this with a temp variable, but i need to do it without the temp variable involved. How exactly is this done???
|
|
|
|
|
Can't tell you exactly because this is your homework. All I can tell you is that is just takes a little math.
The question is designed to get you to think about the problem within the constraints. There's always more than one way to do something.
|
|
|
|
|
Oh i see now, i thought there was a function that i had to use, instead of maths, but i get it now. Thank you.
|
|
|
|